某周总结
编号 | 题目 | AC sub | Sol Link | done |
---|---|---|---|---|
1 | P9165 「INOH」Round 1 - 意外 | Link | √ | |
2 | P8258 [CTS2022] 独立集问题 | |||
3 | P9157 「GLR-R4」夏至 | Link | √ | |
4 | P9159 「GLR-R4」大暑 | |||
5 | CF725E Too Much Money | Link | √ | |
6 | CF949E Binary Cards | Link | √ | |
7 | P2051 [AHOI2009] 中国象棋 | Link | √ | |
8 | P5435 基于值域预处理的快速 GCD | √ | ||
9 | P7606 [THUPC2021] 混乱邪恶 | Link | √ | |
10 | P9005 [RC-07] 超超立方体 | Link | √ | |
11 | P4494 [HAOI2018]反色游戏 | Link | √ | |
12 | P3516 [POI2011]PRZ-Shift | × | ||
13 | CF207C3 Game with Two Trees | Link | √ | |
14 | P7620 CF1431J Zero-XOR Array | Link | √ | |
15 | F - Communication Towers | Link | √ | |
16 | F - Wrap Around | Link | √ | |
17 | E - Permanent | Link | √ | |
18 | F2 - Survival of the Weakest (hard version) | |||
19 | 「PA 2021」Areny | |||
20 | 树特卡克林 | |||
21 | 匹配计数 |
Sol 1
传递信息的难点在于每个信息都要是对的,在接受处验证每个信息的正确性,如果信息错误则需要补传送一些信息来告知这个错误位的信息,但是哪一位是错误不可预知。
一种不需要每一位都是对的的信息传递方式是:插值。只要能累计传过去 \(10^2\) 个正确的点值即可,此事的概率是很大的。
Sol 3
对于任意积性函数 \(f\),和整数 \(n\le 10^5,m\le 10^{10}\),这个东西是好求的:
设 \(F(x,m)\) 表示 \(\sum_{j=1}^m f(xj)\),\(p\) 为 \(x\) 的最大质因子,那么容斥 \(p\) 的指数,可以得到:
记忆化,并预处理 \(xm\le 10^6\) 的 \(F\),并用 \(\mathbb{PN}\) 筛筛出 \(F(1,m)\) 的结果。
Sol 5
首先处理的顺序非常确定,从大到小。设 \(f_i\) 表示剩下 \(i\) 元,需要加多少个硬币;然后就可以 dp 了。
Sol 6
首先 \(+2^k\) 和 \(-2^{k}\) 只会有一个,否则可以用 \(2^{2k}\) 和 \(-2^{k}\) 替代;也不会有两个 \(2^k\),否则可以换成 \(2^k\) 和 \(2^{2k}\);不断更换直到满足上述两个条件为止。
如果没有奇数,那么所有数除以 \(2\)。
如果有奇数,那么 \(+1\) 和 \(-1\) 恰好选一个,枚举选哪一个,然后把所有数 \(+1/-1\) 后除以二,递归进两种情况去做。总复杂度 \(a\log a\)。
Sol 7
随便竖着 dp 一下就好了。
Sol 9
\(n^3p^2\) 的 dp:设 \(f_{i,x,y,a,b}\) 表示前 \(i\) 个数,坐标 \(x,y\),\((L,G)=(a,b)\) 是否可达。
优化:考虑一个合法的方案,给它一个随机顺序,那么 \(x,y\) 最大值的期望只有 \(n^{0.5}\)。所以直接给所有 idea 随机一个顺序,然后就可以缩小 \(f\) 中 \(x,y\) 的上限。复杂度 \(\frac{n^2p^2}w\)。
Sol 11
提出任意一个生成树,不难发现只要所有点的和是偶数则一定有恰好一组解,否则无解。解的个数其实就是 \(2%^{m-n+1}\) 组。
在圆方树上统计一下就行了。
Sol 13
广义 SAM 随便统计一下就好。当更方便的是树上后缀排序一下也是一样的。
Sol 14
从高位到低位考虑,记下每个数是否顶着上界、是否顶着下界,可以得到 \(4^n\) 做法。考虑去除无用状态:
既顶着上界又顶着下界:等价于头几位上界下界相同,不需要记下来。
既不顶着上界又不顶着下界:那么剩下的其它位任意,一定存在合法解,可以直接计算答案。
Sol 15
线段树分治维护出每个时刻里和 \(1\) 相连的连通块。需要找到所有这个连通块里还没有被标记过的点。
用一个 treap 状物维护连通块的点集,在 treap 的节点上维护子树内未被标记的结点的个数。
Sol 16
考虑求出不包含的个数。不包含意味着:
- \(t\) 中不包含 \(s\)。
- 设 \(S\) 集合为 \(t\) 前缀中那些存在 \(s\) 的一个等长后缀与其完全相同的,\(T\) 集合为满足类似条件的后缀。那么不存在两个元素 \(x\in S,y\in T,x+y=|s|\)。
然后发现 \(S\) 集合只和它中最大的一个有关,\(T\) 也只和 \(T\) 中最大的一个有关,那么就简单了,dp 扫过去记下 \(S\) 的最大值、当前在 kmp、SAM 上的结点编号就好。
P9005 [RC-07] 超超立方体
由于矩阵树定理:一张图的生成树个数,等于其拉普拉斯矩阵的所有非零特征值的乘积除以点数。
完全图的拉普拉斯矩阵的特征多项式为 \(\lambda(\lambda-n)^{n-1}\),也就带来了 \(n^{n-2}\) 的结论。
设图 \(A\) 的所有特征值为 \(\{a_i\}\),\(B\) 的所有特征值为 \(\{b_i\}\),\(A\times B\) 的特征值为 \(\{a_i+b_j\}\)。那么再上生成函数做一下就成了。
拓展:求两张图的笛卡尔积的生成树个数(因为只知道特征多项式而不知道特征值),需要用到结式的知识。
Sol 17
考虑状压最难考虑的是恰好选择了这些位置,而别的自由位不能碰到 \(a\) 有特殊值的地方。考虑容斥掉:
证明考虑乘法分配律。那么现在就不需要恰好了!直接记下可能会在同一列的列集合,就可以 \(O(k^22^{\frac k2})\) 做了。
有另一个做法是:将 \(a_{x,y}\neq 1\) 视为一个 \(x\) 到 \(y\) 的边,那么就是要选取一个匹配。保留一个生成树,枚举所有非树边的状态,就能做到 \(2^{k-n} n^2\),\(n\) 为去重后点的个数。两个做法平衡一下得到 \(O(k^2k^{\frac k3})\) 做法。