「解题报告」Codeforces Round #722 (Div. 1)

 
A. Parsa's Humongous Tree

既然是 \(A\) 题,那么想简单点好,直接猜取值只多是左端点或者右端点,\(\rm{DP}\) 就行?ide

证实考虑合并子树的时候确定是数轴上的点和当前点的距离和,不太显然取端点比中间的点不劣优化

B. Kavi on Pairing Duty

设 \(\rm{dp[i]}\) 表示前 \(i\) 对圆弧的方案,那么转移分两种ui

  • 全部圆弧长度相同:\(d_i\)it

  • 外侧放若干个长度相同的大圆弧,中间放小的:\(\sum_{j<i} dp_j\)class

直接前缀和优化作到 \(\Theta(n)\)rsa

我的认为有组合的方法,可是预处理 \(\binom xy\) 就须要 \(\Theta(N)\) 就不必了方法

C.Trees of Tranquillity

确实是手速题im

多看一会就能发如今 \(A\) 树上选择的点是一条链,那么直接 \(\rm{DFS}\) 同时回溯的时候撤销贡献就行统计

那么贪心加点,在 \(B\) 树上若是子树里面有点就不加,若是根链上面有选中的点就把那个点撤销di

写一个重链剖分+线段树就行了

D. It's a bird! No, it's a plane! No, it's AaParsa!

若是只能走不能停就冲 \(\rm{Floyd}\) 等等就行,而对于等待是等效于花费 \(1\) 的代价从 \(x\) 走到 \(x+1\),那么建一把虚边

直接使用不优化的 \(\rm{Dijsktra}\),先把当前的源点处理掉

对于每轮扫出来的点,更新连出去的有向边的同时用虚边松弛便可

E.Mashtali and Hagh Trees

如何看待我对着这东西只想到了外向树?

条件三表示要求的是:外向树,内向树,内向树+根之间的边+外向树

下面又是 \(\rm{DP}\) 之美:先求度数小于等于 \(2\) 的部分的 \(f[i]\),且只求内向树

枚举根的前驱的状况获得一个转移:

 

\[f_x=f_{x-1}\sum\limits_{j=0}^{i=2} f_j+f_{x-1}+\binom {f_{x-1}+1}2 \]

 

第一项是表示根的两个儿子的深度不一样,最后一个是深度相同,这里不能直接乘

中间是度数为 \(1\),那么最后纯内向/外向树的答案和上面的相似,度数为三的而已

这里不可贵到根的度数只能是 \(2\) 的 \(g_i=f_i-f_{i-1}\)

注意减掉纯链的状况,此时把外向树翻转就是内向树

对于不是纯外向/内向树的图形强行钦定外向树的根的度数是 \(2\),使用 \(g_i\) 进行统计,也就是 \(\sum\limits_{i=0}^{n-1}f_ig_{n-i-1}\)

F. AmShZ Farm

处理这种问题的 常见 思路是把序列新加入一个点,变成一个长度为 \(n+1\) 的环,也就是所谓的 序列转等几率环模型

对于每一个新加入的 \(i\) 从 \(a_i\) 开始走,走到没有被占据的地方停,若是说最后剩下 \(n+1\) 号点没有被占据则说明序列是合法的

关注到图形变成环了,那么 每一个点空出来的几率都是同样的,为 \(\frac{1}{n+1}\),这个等几率对于任意一个序列都能知足

考虑这样一个性质:将一个合法的序列每一个元素 \(+1,+2,\dots +n\) 能获得一个不合法的序列,可是颜色的相对顺序不变

那么直接获得全部序列的总答案再除以 \(n+1\) 便可获得合法序列的答案

直接堆一波式子:

 

\[\sum_{i=0}^n i^k\binom ni i! n^{n-i} \]

 

有没有很是熟悉?这不就是统一省选 \(\rm{2020}\ Day1T2\) 吗?

直接使用第二类斯特林数展开 \(i^k\) 而后用二项式把后面的组合数缩进去,再平移一把,把价值为 \(0\) 的数舍去就好了

最后使用 \(\rm{NTT}\) 完成一行斯特林数的计算便可

相关文章
相关标签/搜索