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

posted @ 2020-05-26 21:19  lcyfrog  阅读(243)  评论(0编辑  收藏  举报