山东集训
day2
给定 \(n\) 个长度为 \(n\) 的 \(01\) 串,对于每对 \((i, j)\) 求 \(s_i\) 是否是 \(s_j\) 的超集 , \(n \leq 5000\)
显然有 \(O(\frac{n^3}{w})\) 的做法,考虑优化,可以用四毛子。分成一些大小为 \(B\) 块,在每一块内处理出所有 \(2^B\) 种状态所对应的超集,可以用 FMT , \(O(B2^B\frac{n}{w})\) 处理出来.总复杂度 \(O(2^B\frac{n^2}{w})\) , 然后对于每个 \(i\) ,要把它在每个块中处理出的所有超集交起来才是答案,复杂度 \(O(\frac{n}{B}\cdot\frac{n}{w}\cdot n) = \frac{n^3}{Bw}\), 当 \(B\) 取 \(\frac{log(n)}{2}\) 时复杂度为 \(O(\frac{n^{2.5}}{w} +\frac{n^3}{w\cdot log(n)})\).
day3
T1 感觉没什么难度,20分钟就会了,但大家好像都没做出来?
然后是 T2
将一个二分图划分成若干条长度小于等于 \(3\) 的链,要求最小化孤立点的数量,并在最小化孤立点的基础上最小化长度为 3 的链的数量。
从 \(S\) 向所有左部点连容量为 \(1\), 权值为 \(-10^6\) 的边,和容量为 \(1\), 权值为 \(1\) 的边, 右部点向 \(T\) 同理。跑网络流,直接原始对偶就过了。
day6
T2 可以启发我们一个计数技巧,有 \(n\) 个盒子,每个盒子里有 \(a_i\) 个球,然后要选一个盒子和一个球,满足球不在这个盒子里,问方案数。如果先选盒子再选球显然是很难做的,式子会是 \((\prod_{i=1}^{n}a_i)(\sum_{i=1}^{n}\frac{1}{a_i})\) , 就很复杂,但是如果先选球再选盒子,那式子就是 \((n-1)\sum_{i=1}^{n}a_i\) 。第二种计数思路甚至不需要知道每个盒子里具体有多少个球,只需要知道一共有多少个球,多少个盒子就行了。可能计数时就应该先选多的再选少的?或者说整齐的映射很重要?
T3 又想复杂了。总结一下 T3 启发的计数技巧: \(F(n)\) 是一个和长度为 \(n\) 的序列有关的计数函数,现在要求 \(\sum_{i=1}^{n}\binom{n}{i}F(i)\) , 可以看做对序列计数,但是有些位置可以跳过(或者说可以为空,感觉解释的不够恰当)。
day7
T1没做出来真不应该,T2感觉明明一点都不可做,但不知道为什么大家都想出来了,大家的脑回路都好清奇。怎么思维都这么强。
第一题要构造一棵以 \(1\) 为根的树满足:\(hs = \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}X^i Y^j Z^{lca(i,j)}\) , 其中 \(hs,X, Y, Z\) 是给出的。可以想到先用编号 \(2\) 到 \(11\) 随 \(10^5\) 个左子树,再用编号 \(12\) 到 \(21\) 随 \(10^5\) 个右子树,然后用生日悖论拼起来就行。然后发现整棵树的哈希值是 \(hs(ls_1) + hs(rs_s) + 左右子树之间的贡献\) ,然后发现这个左右子树之间的贡献很麻烦,然后就不会了。但是这个左右子树之间的贡献是定值 !!!!,然后就没了。
第二题太难了,注意到第二句没有绝对值,第一步不应该都是先想到按模 \(4\) 分组吗,然后我就想偏了,正确的做法是根据ace猜想每个 \(\leq 8\) 的合数可以表示成两个不同的质数的和,记为 \(a, b (a < b)\) , 然后一直往后跳 \(a\) , 如果跳不动就跳 \(b\) 。如果 \(n\) 是奇数,那么就找一组 \(a, b\) 满足 \(a + b = n - 1\) 就行。
第三题根据题意列出来一个组合恒等式,然后交换一下求和顺序,范德蒙德卷积一下,然后跑个 \(ntt\) 就做出来了,比 T2 简单 \((1 - 10^{-14})\) 倍。