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)\)

posted @ 2025-08-18 21:04  LQ636721  阅读(10)  评论(0)    收藏  举报