时间安排
7:30–7:40 读题,T1 感觉是个建图题,T2 dp ,T3 构造。
7:40–9:20 T1,对于特殊情况可以分类讨论,然后考虑怎么建图,经过不断试错后瞎猜一手结论,经过简单证明感觉没啥问题,于是有 n^3log 的图。
9:20–9:40 T2, 有显然的 n^2 暴力。
9:40–10:10 回头看了一眼T1,发现貌似可以进一步优化建图,于是有 nm 的建图。
9:40–10:30 T3,想一想暴力怎么做,发现好像没法做。可以直接随机化莽,对于暴力分范围比较小可以轻松通过。然后简单打了个表,没有什么规律。
10:30–11:40 T2,考虑能不能拉插,好像没啥用。然后发现值域可以直接离散化,于是有 40 分。想到有另一种容斥角度的做法,但是感觉复杂度差不多,而且还带个 min 。
回顾反思
T2:
赛时想到了容斥的角度,不过感觉复杂度差不多而且还带着 min 不好维护就弃了。
不过显然 min 是可以拆成前后缀的和的形式的,而且对于一个点在值域上只有一个位置有初值,完美契合线段树合并的形式。于是直接线段树合并就行了。
线段树合并可以很好的处理前后缀的形式。
min、max 的函数可以拆成前后缀。
值域大的时候要么可以插值要么经分析只有离散化后的点有用。
T3:
神奇的构造。
首先一个套路是,对一个排列进行若干 swap ,每次 swap 逆序对的奇偶性取反。那么若操作后的排列与目标排列奇偶性不同必然不符合要求,否则可以大胆猜测一定有解。很多这样构造排列的题目可以围绕奇偶性讨论。
于是发现,若符合要求, n 在模 4 意义下为 0 或 1 。
如果剩下 0 或 1 个数必然合法。那么先暴力操作使得每个数对应的值都符合要求,然后以 4 个数为一个单位操作保持这样的符合要求的局面不变就行了。