既然是 \(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]\),且只求内向树
枚举根的前驱的状况获得一个转移:
第一项是表示根的两个儿子的深度不一样,最后一个是深度相同,这里不能直接乘
中间是度数为 \(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\) 便可获得合法序列的答案
直接堆一波式子:
有没有很是熟悉?这不就是统一省选 \(\rm{2020}\ Day1T2\) 吗?
直接使用第二类斯特林数展开 \(i^k\) 而后用二项式把后面的组合数缩进去,再平移一把,把价值为 \(0\) 的数舍去就好了
最后使用 \(\rm{NTT}\) 完成一行斯特林数的计算便可