11.4~11.10
联考题解,包括 MX 和 CF 的比赛。
一个显著的问题是在一些实际上不耗费什么时间的题目耗费了很多时间。
做题的题解还是一并写在下面了。(没写完)
P10830 /2 操作在模 4 意义下考虑是方便的。而记集合为 \(S{0\sim 3}\),容易得知当 \(|S_0|,|S_2|>0\) 或 \(|S_1|,|S_3|>0\) 时有解,考虑如何得到这样的状态。
对于任一 \(S_i\),找到最低不同位 \(d\),操作一次,就得到了 \(d-1\) 位不同,最终得到 \(1\) 位不同即可。这是最优构造。
P10833 这玩意只有 \(O(n)\) 对,可以暴力一点统计。以 \(1\) 为中心,考虑最大值在 \(1\) 的左右侧情况,就判断能不能穿过这个 \(1\),以及用哈希判断得到的东西是否合法。
P5913 画一下两种操作的逆相当于缩图、补图的连通块,显然这是交替的。我去暴力做:每次遍历连通块,\(m\) 减少 \(O(n)\) 边,因此轮数是 \(\sqrt m\) 的。好像有哈希的更优秀做法。
P11152 \(n=2\) 是折线容斥,但是那个组合数式子看起来就很没前途;考虑直接使用 FFT 优化暴力的容斥 dp。贡献有三种(直线为 \(L_1,L_2\)),\(L_1\) 到 \(L_2\),\(L_2\) 到 \(L_1\),\(L_1,L_2\) 内部。最终的答案可以被表示为多项式求逆的形式。
P7065 首先必须裂开的是离散化后不相邻的位置和递降位置,然后显然 \((x,x+1)\) 这样的对全局只能连接一次,因此对值域进行 dp。这里连接的方案需要满足:\(x,x+1,x+2\) 连起来,中间的 \(x+1\) 必须让所有 \(x+1\) 都落在这一段内,然后直接 dp 即可。
ARC095D 画一下,发现(最优的话)直径就是后缀 min 序列 \(a_{1:m}\),伸出去一些长为 \(1\) 的链落在 \([a_i+1,a_{i+1}-1]\)。直接构造即可。
P3295 用 ST 表下传限制。
ABC262H 得出每个数最大取多少。这个时候每个上界相同的限制独立!每个限制变成不能全 \(0\),这个可以直接 dp,设 \(f(i,j)\) 为上一次选择在 \(j\) 的方案数,限制形如一段前缀被赋 \(0\)。这个 dp 是容易优化的。
AGC022F 困难 dp 题
P5999 对连续段 dp。要求一个数两边全大于或全小于他。记录从小到大插入时候的连续段即可。
CF325E 神秘构造??一般做法:考虑 \(x,x+n/2\),都导向 \(2x\) 和 \(2x+1\),现在任意指定一个分配(比如 \((x,2x),(x+n/2,2x+1)\)),这下连出了环。然后交换配对方案即合并环,合并即可。
神秘做法:从前往后推,\(0\to n/2\to ...\) 这样会导出两个值,每次选值更大的那个,???
CF985G 直接容斥即可,代码依托奋
CF566C 注意此函数为凸函数,即任意两点间为单谷。找到答案点,则得出结论:每个点有且仅有向答案那边的边是值减小的。对其点分治,只需 \(O(n)\) 找出向哪边是减小。为了避免菊花图,这个考虑计算导数。
CF1523E 化为 \(P(X\ge i)\) 计算即可。
CF1515E 这相当于留空格的选取。对连续段 dp,这里我钦定连续段配上一个空格。那么每次可能扩大连续段或者新建连续段,这里由于结构是不可能合并连续段的。