20241103 训练记录

杂题选讲

Omkar and Landslide

可以发现,我们把一轮操作分解成对每个位置的单个操作,那么这些单个操作的顺序是可以随意调换的。由于最后一定会操作到不能继续操作为止,这样一轮一轮的操作就可以等价为:顺序操作 \(1\)\(n\) 的每个位置,若这个点能向前滑坡,就一直滑到不能滑为止。

那么从这样的操作方式中,我们可以发现一个结论:一定只存在不超过 \(1\)\(i\),使得最终数组中 \(h_i=h_{i+1}\)

具体证明参见这篇题解。大概意思就是说对 \(1\)\(n\) 一次进行上述操作时,若前面没有相同位置,则至多出现一个相同位置;若前面有相同位置,则会减少一个相同位置或不变,于是最终的相同位置至多 \(1\) 个。

有了这个结论之后,我们先假设不存在相同位置,设第一个位置的最终值为 \(x\),因为最后的数组是一个等差数列,和就为 \(\cfrac{n(2x+n-1)}{2}\)。设原数列的和为 \(s\),则前面的式子就等于 \(s\),于是可以直接解出 \(x\) 的值。

再考虑有一个相同位置 \(p\) 的情况,那么此时 \(\cfrac{n(2x+n-1)}{2}-p=s\)。那么先对第一种情况解出的 \(x\) 取上整,这样得到的也是第一个位置的值。所以 \(p=\cfrac{n(2x+n-1)}{2}-s\),那么将等差数列的后 \(p\) 个位置减去 \(1\) 即可得到答案。

posted @ 2024-11-03 21:44  陆羽扬  阅读(3)  评论(0编辑  收藏  举报