“科大国创杯”2023 年安徽省青少年信息学科普日活动 初中组 T4 题解

发布时间 2023-04-21 08:24:41作者: pref_ctrl27

注意到对于全局最小值 \(x\) ,一旦我们可以合并它,我们一定会优先合并,因此 \(x\) 和与 \(x\) 相邻且更靠近起点的位置构成一个决策整体,定义为广义节点。

合并一个广义节点的贡献为 \(x\times sz+c\),然后会让 \(x\gets x+a\)
考虑比较先后合并两个广义节点 \(x,y\) 的决策优劣,可以发现相当于比较广义节点平均值的大小。

考虑分开维护左右两侧,相当于每次将最小的 \(x\) 向起点合并,如果碰到起点就删去该块,然后会形成若干个块,考虑维护最终块的形态。

以左边为例,考虑从左向右扫描,尝试计算新加入一个数 \(x\) 对于局面的影响。

\(x\) 小于等于其左侧块的平均数,那么 \(x\) 会形成一个新的块。
\(x\) 大于其左侧块的平均数,则 \(x\) 会被合并到左边的块中。但是这次合并可能会造成这个块会被倒数第二个块合并,因此还需继续操作。

注意到数据随机,所以栈高不超过 \(\mathcal O(\log n)\),所以直接暴力做即可。

如果数据不随机,可以动态维护 \(f(x)\) 函数做到均摊 \(\mathcal O(n\log n)\)