HNOI2018省队集训 Day1
HNOI2018省选集训 Day1
Tree
直接大力讨论+树剖
当前根为rt,u和v的lca是lca(u,v),lca(u,rt),lca(v,rt)中深度最大的一个(以1为根)
子树区间也讨论一下
function
转换题意,变成有1e9*n的矩阵,每列权值相同,每次可以向上/左上走一格,最小化以某个点为起点的经过权值和。
首先方案一定是先往左上走若干步,走到权值较小的一列直接走到顶
那么走到第i列往上的答案是关于\(x-y\)(起点的x,y)的一次函数。考虑按y顺序加入直线,最小值即为一割上凸壳。然后有性质保证斜率单增,直接单调栈。统计答案在凸包上二分出当前\(x-y\)的位置即可。注意每列的一次函数有定义域。
or
首先有朴素dp:
\[d p[i][j]=\sum_{k=1}^{j} d p[i-1][j-k] \times 2^{j-k} \times\left(\begin{array}{l}j \\k\end{array}\right)
\]
直接ntt优化是\(nklog\)的
考虑计算\(f_i=\sum_{j=0}^kdp[i][j]\),展开组合数得到
\[\begin{align}\frac{d p[i][j]}{j !}&=\sum_{k=1}^{j} \frac{d p[i-1][j-k] \times 2^{j-k}}{(j-k) !} \times \frac{1}{k !}\\F_{i}(x)&=F_{i-1}(2 x) \times\left(e^{x}-1\right) \\F_{n}(x)&=\prod_{i=0}^{n-1} e^{2^i x}-1\end{align}
\]
这个可以直接倍增
\[F_{n}(x)=F_{n/2}(x) \times F_{n/2}\left(2^{\frac{n}{2}} x\right)
\]
for else
另外这三道题在BZOJ上是5379~5381