平凡的做题记录
12.25
P3270 [JLOI2016] 成绩比较
先考虑每个科目课内满足给定要求的成绩方案数,不考虑具体哪些人是哪些人,对于每一个科目,暴力枚举 B 成绩:
二项式定理暴力拆:
最后那个自然数幂和可以拉插。可以做到 \(O(mn^2\log n)\)。
上面部分是独立的一个系数。考虑剩下的部分,恰好转钦定,然后是很平凡的组合数学。懒得写了。
P3643 [APIO2016] 划艇
有:
不难发现按 \(a,b\) 将值域分为至多 \(2n+1\) 段后,每一段内都是一个多项式,一个段被操作一次后阶数至多增 \(1\),直接拉插可以做到 \(O(n^3)\)。
反正我会被洛谷 \(1s\) 时限卡常。以后练到组合数再补得了。
AT_abc212_h [ABC212H] Nim Counting
先手能赢当且仅当所有堆石子数异或和非零。有 DP:
简单改写:
发现是个异或卷积形式。考虑 FWT。由 FWT 的线性性,所求即为:
等比数列公式直接套即可,注意特判 \([i]\mathrm{FWT}(f)=1\) 也就是公比为 \(1\) 的情况。
12.27
BK5334 [BestCoder Round #88] Tree Cutting(改)
考虑一个暴力树上 DP,然后 FWT 优化一下转移就做完了。
P4336 [SHOI2016] 黑暗前的幻想乡
观察数据范围不难想到应该是个状压。
每个公司恰好负责一条路太难搞了,发现可以转化为每个公司都有负责。这个就很好容斥了。
具体的,枚举钦定哪些公司不负责,然后只把要负责的公司的边加进去,跑矩阵树定理即可。\(O(2^nn^3)\)。
P3317 [SDOI2014] 重建
注意是恰有 \(n-1\) 条边存在,因此我们要求的实际上是:
推一下式子:
对后面那个跑矩阵树定理即可。但是 \(p_e=1\) 时这个式子会出问题,我们令所有 \(1-p_e\) 加上 \(eps\) 即可。
CF917D Stranger Trees
好多 trick!
首先套路地恰好转钦定,考虑如何求钦定 \(k\) 条边重合的方案数,很巧妙的是这个恰等于 \(n-k\) 个连通块生成树的方案数!
然后一个很经典的式子是求 \(n\) 点 \(k\) 个连通块生成树方案数,其中 \(a_i\) 表示第 \(i\) 个连通块的点数:
这时候已经可以 \(O(n^3)\) 树上背包了。但还可以继续优化。
考虑 \(\prod a\) 这个东西的组合意义,发现等价于每个连通块内选一个点的方案数,于是可以设计 DP \(f(i,j,0/1)\) 表示点 \(i\) 子树内有 \(j\) 个连通块且 \(i\) 所在连通块选没选点的方案数。转移显然。于是就做到了 \(O(n^2)\)。

浙公网安备 33010602011771号