【GDKOI】总结 2.16-2.18

2.16

概述

先看数据范围,根据数据范围推得算法的时间复杂度。能打的暴力,在时间允许的情况下就打,不要怕复杂。
有时一个方法想不通,可以换几种方法,不要陷入一种方法中。
将题意转换化简一下,往往就能得出正解。

T1:【GDOI2003】购物

因为没有环,转化成树后,经典的树形dp。
枚举结点选或不选,得到该节点的子树的答案最大值。

T2:删边

刚开始看到这道题,没有什么特别好的方法。暴力水的70分。
这题和T4的思想类似,可以通过递归求解直径,通过转根,使得另一边的直径可以直接算出来。
只不过要分多种情况,还是挺复杂的。
要尽量保存更多的信息,而不需要重新计算,通过原先的答案推出新的答案。降低时间复杂度。

T3:blockenemy

这题可贪心,并查集加边维护。正解是dp。
dp要分多种情况讨论。
考试时没有想到特别好的方法,暴力太复杂,所以没打。

T4:treecut

很简单的转根,也是我最拿手的题型。

2.17

概述

这套题是我感觉最好的一套题,很多题之前都做过相类似的。

T1:广告印刷

做过很多次这种类型的题,单调队列判断最远能扩展到的地方。

T2:锻炼身体【推荐】

瑰丽华尔兹,dp加单调队列优化。

T3:求和

欧拉函数有一个公式,但考试时并不知道,可以通过容斥原理筛选并得出答案。

T4:无题noname

扩展GCD解整数解,第一次较彻底的明白扩展GCD的功能及其原理。
要有较好的数学功底转化并化简题目。

2.18

概述

发挥不大好,T1,T2离正解好差一点。

T1:得分

看起来像01背包,然而打完之后发现并不是,因为这道题有后效性。
除非能够确定一个特定的顺序,确保无后效性,再dp就没问题了。
考试时,因为这一问题卡壳了,然后朝其他方向想,想了一个错误的单调队列。
顺序其实很好确定,讨论一下两个不同的作业谁更优即可。

T2:荒岛野人

因为不太会化简恒等取mod式,所以直接暴力枚举。
首先要理解好题意,写出一个恒等式,化简。上扩展GCD直接求得相遇所需的最小年限。优化掉一重循环。

T3:体育场

可以建关系树,发现树可以用并查集的路径压缩,来压缩路径,通过一个数组d,判断是否矛盾。

T4:机器人M号

题目竟然有800+字…从前面一堆废话中,提取信息:老师:是x的因子,独立数:该点的欧拉函数。
通过递推式求得答案。