「考试」省选69

T2强制在线挂了qvq,结果是因为初值写错了,T3数组开小掉了10pts
其他倒还好。

T1
秀最靓的操作,写最短的代码。
其实就是我们按照\(kruscal\)考虑的话,我们可以把最小生成树上的边都列出来。
这是一个单调不讲的序列。
把最后一个和前面\(n-2\)个分别考虑,然后一个一个的削减\(w[n-1]\)增加\(w[1...n-2]\)就可以了。
这个过程是\(O(1)\)的。

T2
板子题,用\(LCT\)维护最大独立集的\(dp\)即可。
具体来说对于虚实子树分别维护一下当前确定区间的左右端点(链的顶底)是否被选就可以了,虚子树的话就分别按照方程维护对选和不选的最优贡献即可。

T3
组合数学+容斥原理+生成函数
\(f_i\)为恰好分成了\(i\)段的方案,\(g_i\)为至多分了\(i\)段的方案。
那么求出\(g_i\)然后二项式反演即可。
考虑\(g_i\)怎么求。
设:

\[F(x)=\prod\limits_{i=1}^{n} \sum\limits_{k=1}^{a_i}\binom{a_i-1}{k-1}\frac{1}{k!} \]

直接分治\(NTT\)即可。
那么:\(f_i=i![x^i]F(x)\)
这样就可以直接用二项式反演了,反演的过程可以发现是卷积形式。
再次卷积即可。
复杂度\(O(mlogmlogn)\)

posted @ 2020-04-13 19:32  Lrefrain  阅读(128)  评论(0编辑  收藏  举报