[杂谈] 日报 D11
小智老师拉的模拟赛 . 题都不算难 , 但是都挺有意思 , 某种程度的经典题吧 , 就记录一下 .
[ZJOI2022] 众数
经典的根号分治套路 , 拆成 \(>\sqrt n\) 和 \(<\sqrt n\) 两部分 , 然后分别考虑贡献即可 .
这里的经典的套路是 \(<\sqrt n\) 这里怎么利用出现次数少的性质处理 .
一个是两端点同色区间为 \(\sqrt n\) 个 , 扫描线一个端点就可以做到 .
另一个是扫描线下可以有总量 \(n\sqrt n\) 的区间众数处理 . 只要一直维护当前右端点 \(r\) 上众数为 \(k\) 的最大左端点 \(l_k\) , 显然 \(k<\sqrt n\) , 用 two pointer 即可 .
[十二省联考 2019 ] 皮配
考察 "无关性" 想法的 dp 题 . 部分分的引导很充分 .
简单的简化想法是只需要维护 \(C_0\) 和 \(D_0\) 两项选的个数即可 , 剩下的都可以用 \(sum\) 减得到 .
然后发现了 \(k=0\) 时 \(C_0\) 和 \(D_0\) 选择的独立性 , 可以分开处理 .
然后就考虑对 \(k=30\) 部分的 \(\le30\) 个城市和学校单独处理 , 这里就只能暴力 dp , 然后剩余部分独立考虑 即可 .
最后注意一下复杂度剪枝 .
[ZJOI2022] 树
更像是 ACM 题的计数题 .
首先会有一个状压的思路 , 设 \(f(S)\) 表示第一棵选 \(S\) 中的点非叶子的方案数 , \(g(T)\) 表示第二棵选 \(T\) 中的点的方案数 , 可以 dp 出来 , 然后把 $S,T=div\left( {1\cdots n} \right ) $ 对应相乘就好了 .
考虑直接选集合没有多项式复杂度的前途 , 考虑容斥 . 显然 , 对于单个函数 , 求 \(f'(S')\) 表示非叶子节点是 \(S'\) 的子集的方案数 , 这样相当于钦定了一个可以成为父亲的集合 , 可以以集合大小为状态 dp .
考虑两个函数都经过了这样的变换 , 所以容斥式子需要整理 :
相当于让不属于 \(S'\) 或 \(T'\) 的都带上 \(-2\) 的系数 , 然后就可以以前 \(i\) 个数内选了多少个 \(S'\) , 以及钦定 \(i\) 到 \(n\) 选了多少个 \(T'\) 来 \(O(n^3)\) dp 即可 .
想法还是很巧妙的 , 不过更像是 ACM 的说 .
然后就是 PKUCPC 了 , 还是拖到一起写题解得了 .

浙公网安备 33010602011771号