时间安排
8:30–8:45 读题,T1 貌似是个三维偏序,不过直接树套树也能过。T2 是个奇妙的构造。T3 感觉以前见过类似的,但是没什么想法。T4 是个期望DP。
8:45–9:20 T1,先写了个 n^2 暴力确定想法没问题后开始码树套树。造了组大数据,跑得还是很快的。
9:20–9:40 T2,数据范围有点不正常。第一档 n<=3 ,后面直接快速增长到 1e5 。仔细想想发现是个诈骗, n>3 的时候压根无解,剩下的数据范围比较小可以直接爆搜。
9:40–11:00 先看T4。容易想到一个暴力的区间 DP ,n^3 ,再加上特殊点就有 50 了。有个特殊点,尝试把暴力稍微改改看看能不能过,发现自己造的极限数据过不了。
11:00–11:20 把T3暴力写了。状压枚举阶乘。
11:20–11:30 T4,发现每次询问的结构实际上是相同的,于是采用倍增的思想预处理一下,复杂度直接降了一个 n ,特殊点稳过。
11:30–12:30 思考T4正解和T3高档部分分。
12:30–13:00 思考部分分,检查一些低级错误。发现 T4 有个地方变量名重了,保险起见改了一下。
回顾反思
T1: 非常可惜。这道题本来能拿 100 的,但是写树套树空间没敢开太大导致 WA 了30.树套树拙劣的 log^2 空间复杂度不敢大意。如果用 cdq 的话就无须考虑空间问题了,有时还是不能偷懒啊。
T2: 诈骗题。做题还是要多观察性质,思考部分分给的意图。这道题第一档 n<=3 就非常之可以。得到 n>3 无解的关键性质后就很好做了。
T3: 类似思路其实考场上已经想到了,但是如何 DP 没有头绪。待研究。
T4: 其实自己的思路和正解已经很接近了。我看出了可以维护一些子树的基本结构,但是因为不知道哪些会用到所以就写了个 ST 的东西对每个 2的幂 的块都维护了一遍,导致复杂度爆炸。正解写的还是很妙的,一个点从二叉树的一个叶子到跟过程中的兄弟结点,可以考虑将目标点放在首部预处理所有子树,再放在尾部处理所有子树,这样容易发现,对于目标点的任何位置的情况其需要的兄弟子树都能对应到我们预处理的两个子树结构的至少其中一个,目标点所处编号的寄偶性讨论一下就可以了。