1 条题解
-
0
自动搬运
来自洛谷,原作者为

喵仔牛奶
黄昏再美终要黑夜。搬运于
2025-08-24 22:54:05,当前版本为作者最后更新于2023-12-12 21:24:55,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
复杂度较劣,需要卡常才能通过的 NTT 题解。
Solution
由于树的节点数没有什么用,下文将题面中的 对调。
Part I
记前缀和 。
观察发现可以选定一些点,将所有热量供给给它们,不管其他点。
需要养活这些点,就要在第一个 的时刻点 给它们 的热量(每个时刻可以传递无限热量,最优情况就是一次传递所有需要的热量)。
那么定义根节点深度为 , 为深度 的点数,一种方案的答案即为 (其中 为第一个 的时刻)。
暴力枚举 即可。时间复杂度 ,期望得分 。
Part II
考虑把它变成式子的形式。
先做一些预处理:
- 表示长度为 的,所有数 ,任意前缀和非负,所有数和为 的序列数。
- 表示长度为 的,所有数 ,任意前缀和为正,所有数和为 的序列数。
- 。
- $s_{a,v}=\sum_{b=a+1}^{n}g_{b-a,v}\times pre_{n-b,nm}$。
记前缀和 。
枚举 为前缀和中第一个负数的位置, 为前缀和中全局最小的位置, 为 , 为 。
- 为了避免算重,多个最小值在第一个最小值处算贡献。
- 对于 和前缀和不存在负数的情况要特判算贡献。
则答案为:
$$\begin{aligned} &t\times\left(\sum_{i=0}^{nm}f_{n,i}\right)+\sum_{a=1}^{n}\sum_{c=-m}^{-1}\left(\sum_{i=0}^{c+m}f_{a-1,i}\right)\times\left(\min\{-k/c,siz_a\}\times \left(\sum_{i=0}^{nm}f_{n-a,i}\right)+\sum_{b=a+1}^{n}\sum_{d=-nm}^{c-1}\min\{-k/d,siz_a\}\times g_{b-a,c-d}\times\left(\sum_{i=0}^{nm}f_{n-b,i}\right)\right)\\ =&t\times pre_{n,nm}+\sum_{a=1}^{n}\sum_{c=-m}^{-1}pre_{a-1,c+m}\times\left(\min\{-k/c,siz_a\}\times pre_{n-a,nm}+\sum_{d=-nm}^{c-1}\min\{-k/d,siz_a\}\times s_{a,c-d}\right) \end{aligned} $$直接暴力算就能做到 ,获得 分。
Part III
然后是优化这个式子。
- 考虑贡献中的 ,可以除法分块,预处理 的前缀和即可做到 。
- 然后是预处理 $s_{a,v}=\sum_{b=a+1}^{n}g_{b-a,v}\times pre_{n-b,nm}=\sum_{b=1}^{n-a}g_{b,v}\times pre_{n-a-b,nm}$,这是多项式乘法的形式,可以 NTT 做到 。
- 预处理 的话,可以前缀和优化做到 。
时间复杂度 ,使用极限卡常手段之后开上 O2 可过。
- 1
信息
- ID
- 9380
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者