day13
Gym103870Q
\(f_n\) 为不能表出多少 \(\le n\) 数。
加入 \(p\),则 \(f_n-=f_{\lfloor n/p\rfloor}\)。
删除 \(p\),则 \(f_n+=f_{\lfloor n/p\rfloor}\)。
需要求 \(f_n\),那么只需用到 \(\lfloor n/i\rfloor\) 一类的位置。
所以复杂度 \(\mathcal{O}(n\sqrt{n})\)。
CERC2017 Kitchen Knobs
差分,考虑操作了 \(i<j\),对其连边。
发现一个联通块可以用一棵数来操作,那么就会赚一点。
考虑先把 16,25,34 的对子凑出来,这样只剩三种数。
于是分成尽量多的树,然后跑个 dp 就能算。
CF1178F2
对于排列可以直接做一个区间 dp,因为染过一次之后序列就被分成若干独立部分了。
不是排列的时候,首先可以把同色相邻的缩到一起,其次可以证明答案非零要求异色相邻的数量是 \(\mathcal{O}(n)\) 的。
因此序列长度只是 \(\mathcal{O}(n)\) 的级别,不过对于 \(2,1,2\) 这样的序列会错判有解,需要操作一下。
JLOOI2016 字符串覆盖
考虑一个 dp 为 \(f(i,s)\) 表示 \(i\) 结尾放了 \(s\) 集合的串。
对于 \(\min\) 可以直接做,对于 \(\max\) 可以拆出来用数据结构维护。
但是后者还可以贪心一下做到更优。
CF1149D
是个原,把 \(a\) 先连了,剩下只考虑 \(\ge 4\) 的块,然后状压。
[IOI2023 集训队互测 R3] 整数
\(f(i,s)\) 是做到 \(i\) 位时 \(s\) 集合内不合法,可以写成类似 FWT 的东西。
[IOI2023 集训队互测 R15] 翻修道路
CF750G New Year and Binary Tree Paths
[USACO19DEC Platinum] Tree Depth
CF1158F Density of Subarrays
CF1605F PalindORme
CTT2022D4T3
从超过数入手,考虑 \(f(i,j,k,a,b)\) 表示考虑前 \(i\) 个位置并在 \(i\) 填一个 \(\le i\) 的,有 \(j\) 个 \(\le i\) 的,没填的数中有 \(k\) 个小于它的,超过数和下降数分别是 \(a,b\)。
另有一个 \(g(i,j,k,a,b)\),这个是填了 \(>i\) 的。
对着 \(k\) 做神秘前缀和可以做到 \(\mathcal{O}(n^5)\)。

浙公网安备 33010602011771号