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

Vsinger_洛天依
天如桜落月摇情 此方凡人入梦月 | 叫我小洛/依依/天依都可以哦 || 逆天依教(其实是粉丝群啦):1009602220搬运于
2025-08-24 22:39:26,当前版本为作者最后更新于2024-09-12 19:09:10,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P8478 「GLR-R3」清明
参考了出题人题解和 xcyyyyyy 大神的题解,强推前两篇。
拿到题完全没思路怎么办???
人类智慧的巅峰,思维量的登峰造极。
换句话说就是非人题目,不过不得不说 GLR 的题是真的好,难度也是真的高。
首先我们需要看懂题面,这是第一个难点。
题面大意如下:
对于一个雨滴,它可以向任意编号小于等于 的台阶上移动,而其对应的一部分容量也会在移动后修改至其移动后的台阶。
同时雨滴体积不会莫名其妙减少或者增多。
而在「下一个瞬间」其对应的奇妙度为 。
求所有本质不同的「下一个瞬间」的奇妙度总和。
考虑从数据范围入手。
-
Subtask 5
对于 ,在此情况下每个台阶上的雨滴最多只会向下移动一个台阶。
我们定义 为第 个台阶向下一阶流动的雨水容量。
那么我们就可以知道 。

可以发现 $ans=\sum\limits_{c}\prod\limits_{i=1}^{n}(a_i+c_{i-1}-c_i)$。
考虑多项式展开,对于内部的 我们直接划分为两部分: 和 。
此时我们推广到积就会得到很多项 和 的和,我们再引入一个子集 。
每个 代表在 中选取,否则代表在 中选取。
那么我们也就发现 $\prod\limits_{i=1}^{n}(a_i+c_{i-1}-c_i)=\sum\limits_{S\subseteq \{1,2,\cdots,n\}}\prod\limits_{i\in S} (a_i-c_{i})\prod\limits_{i\not\in S}c_{i-1}$。
整体式子也就得到了 $ans=\sum\limits_{c}\sum\limits_{S\subseteq \{1,2,\cdots,n\}}\prod\limits_{i\in S} (a_i-c_{i})\prod\limits_{i\not\in S}c_{i-1}$。
我们考虑去掉外层的 ,策略就是把下标 相同的一批都合成到一起。
当 时,考虑 和 ,定义 为包含 的所有 的乘积之和, 为不包含 的所有 的乘积之和,我们就可以分成 个情况来转移。
-
贡献是 $\sum\limits_{0\le c_i \le a_i}(a_i-c_i)=\frac{a_i(a_i+1)}{2}$。
-
贡献是 。
-
贡献是 $\sum\limits_{0\le c_i \le a_i}(a_i-c_i)c_i = \frac{a_i^2(a_i+1)}{2}-\frac{a_i(a_i+1)(2a_i+1)}{6} = \frac{(a_i-1)a_i(a_i+1)}{6}$。
-
贡献是 $\sum\limits_{0\le c_i \le a_i}c_i=\frac{a_i(a_i+1)}{2}$。
那么我们就可以直接递推的从 向 转移。
这样我们就终于完成了拿到了 13 pts,复杂度 。
-
-
Subtask 6
考虑从 Sub5 进行推广, 代表第 个台阶到第 个台阶流动的量,然后就能拿到一个能拆的式子。
$$\sum_{c}\prod_{i=1}^{n}\left(\sum_{j=0}^{\min(i-1,k)}c_{i-j,j}\right) $$然后再推好像就好点,我们继续展开。
依然是先把 置之不理。
我们设对于所有 的出现下标构成的集合为 ,那么可以得到这样一个式子。
考虑外层 的影响,显然第一维不同的 之间互不影响。
先将外层乘积 展开为若干 次单项式的和,针对每个单项式,我们考虑 的约束即 。
利用乘法分配律,分别对每个 维度的 进行求和,最终我们可以收拢成一个和式。
$$\prod_{i=1}^n\sum_{c_i}\left[\sum_{j}c_{i,j}=a_i\right]\prod_{j\in S_i}c_{i,j} $$这好像不是很好做啊,那我们可以构建一个组合意义来简化题面。
我们用 表示对于任意合法的 , 中有 个变量可以取到非 值,也就是说 。
那么我们就可以建立这样的模型:
有编号为 的 个盒子。
其中编号落在属于 的盒子,放了 个球会贡献 。
而其它盒子无论放多少个球,贡献都是 。
一种方案的贡献为各个盒子的贡献的积。
求往 个盒子中任意放 个没有任何区别的球的贡献之和。
虽然还是不好做,但是起码可以构建生成函数了不是吗?
我们可以发现我们并不关心 具体是多少,我们只关心 。
我们构造生成函数来实现,对于编号在 中的盒子,这些盒子的特点是放 个球的贡献是 ,生成函数为 ,将球放进盒子时,贡献会随着球的数目成比例增加。
剩下的盒子,这些盒子的特点是不论放多少球,贡献始终为 ,因此其生成函数为 ,球的数目对贡献无影响,但我们仍然允许球被放进去。
将这些生成函数组合在一起,让 ,那么总生成函数为:
$$G(x) = \left( \frac{x}{(1 - x)^2} \right)^{s_i} \cdot \left( \frac{1}{1 - x} \right)^{r_i - s_i} $$简化得到:
为了求往 个盒子中放入 个球的贡献,我们需要找到生成函数 中 的系数:
$$ [x^{a_i}] G(x) = [x^{a_i}] \frac{x^{s_i}}{(1 - x)^{s_i + r_i}} $$这等价于:
对 展开,得到:
$$\frac{1}{(1-x)^{s_i + r_i}} = \sum_{n=0} \binom{n + s_i + r_i - 1}{s_i + r_i - 1} x^n $$将这一展开式代入 中:
$$\begin{aligned} G(x) &= x^{s_i} \sum_{n=0} \binom{n + s_i + r_i - 1}{s_i + r_i - 1} x^n\\ &= \sum_{n=0} \binom{n + s_i + r_i - 1}{s_i + r_i - 1} x^{n + s_i} \end{aligned} $$为了找到 项,需要满足 ,可以得知 。
代入可以得到 项的系数为:
$$\binom{(a_i - s_i) + s_i + r_i - 1}{s_i + r_i - 1} = \binom{a_i + r_i - 1}{s_i + r_i - 1} $$可以发现结果只受到 的影响,上面已经提到了,我们考虑 是怎么来的。
可以发现每个 会向集合 的某个盒子 恰好贡献 。
因此每个 在对应区间内,只会贡献一次。
每个 的贡献可以由多个位置 贡献,可以反过来理解:
实际上每个 可以从 这些位置中任选一个贡献。
进行 即可,设 表示在后缀 中有 个位置没有贡献过 的权值和。
转移就枚举一下 然后组合数计算,复杂度
-
Subtask 7
拓展 Subtask 6 中的处理方法,考虑状压。
设 ,用 表示当前后缀,用 表示 是否已经都贡献过 ,复杂度 是过不去的。
那咋办?注意到 的贡献只和 中新增的已经贡献过的位置个数有关,并且能贡献到 的前驱状态 得满足 ,因此我们可以直接做高维前缀和,同时记录一下新增个数即可。
复杂度 ,可以通过 Subtask 7。
-
Subtask 8
直接莽 !欸过不去,考虑优化。
发扬人类智慧,我们发现在 较大的时候只有较少的台阶会超出限制,大多数问题集中在一部分位置
我们如果在 和 处对前后分成两部分的话,枚举后半段位置是否被前半段占用,从而使得前后的贡献分开计算。这样每一段的内部贡献就独立了
因为前半段的贡献不会超出限制,因此每个内部后缀都可以贡献,问题转化为类似 Subtask 6 的形式
考虑动态规划, 表示一下含义:
- : 从后缀 开始。
- : 在区间 中,尚未被占用的位置数。
- : 表示区间 中的位置占用情况。
然后根据前半段和后半段的不同情况分别处理。
我们对前半段的 做类似 Sub6 的转移,对 做类似 Sub7 的转移。
对于后半段,我们枚举 来做类似 Sub6 的转移。
复杂度为 。
-
Subtask 9
Sub8 的做法又过不去了?
我们引入容斥思想来优化 Sub8 的做法,为了优化算法,我们枚举后半段 中的位置是否被超出限制占用。
我们用状态 来表示后缀 中有 个位置是可选的但未被占用
在状态转移时,从 转移到 时,不仅要考虑位置 是否被加入,还需要考虑位置 是否被加入,和 Sub6 类似,但需要结合对后段的枚举。
这样我们就解决了 Sub9,复杂度 。
现在我们解决了所有的 Subtask,我们将 Sub6,Sub7 和 Sub9 进行结合即可通过本题。
-
- 1
信息
- ID
- 7444
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者