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

xiezheyuan
明明我已昼夜无间踏尽前路/梦想中的彼岸为何还未到/明明我已奋力无间/天天上路/我不死也为活更好/快要到终点才能知道/又再回到起点重头上路搬运于
2025-08-24 23:12:48,当前版本为作者最后更新于2025-04-20 22:14:54,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
简要题意
给定一个长度为 的序列 ,定义 $N(i)=\begin{cases}n&i=1\\i-1&\text{otherwise}\end{cases}$ 表示 的前一个数。
你可以进行下述操作任意次:
- 选定一个 ,令 $a_i\gets \max(a_i-2,0),a_{N(i)}\gets \max(a_{N(i)}-1,0)$。
你需要让 中所有数均相等,输出此时 的最大值。
组数据,。
思路
先考虑一个问题:我们如何判断一个 是否是一个合法的解(假设 )?
不妨令 表示 被选择的次数,那么我们实际上有了关于 的 个方程,第 个方程形如:
其中 满足 ,即 的下一个数。
上面的方程是显然的。我们只需要解这个方程,就可以得到所有 ,然后验证 是否成立即可。
至于这个解方程,朴素的高斯消元肯定是无法通过的,不过我们发现方程结构非常简单,可以手动消元一下。时间复杂度 。
现在我们会判定答案,但不会求出答案。这时我们回到题目本身,题目中有一句话:求最大值。
这引导我们思考,如果 是一组合法的解( 充分大),我们能否构造一个非平凡的另解 ?事实上是可以的,我们只需要对每个数都操作一次,这样 。同样的,对于解 ,如果得到 中,,则可以让 来获得一个较大的解 。
于是我们得到了重要引理:
若 是解,则 也是解(之所以不写成 ,是因为 是平凡解,没有考虑的价值)。
然后我们只需要枚举 ,解出 ,令 ,令 来让答案尽可能增大,最后对所有合法的 取最大值即可。
有一个小问题,在解方程时中间结果可能很大,可以选取一个合适的质数 ,在有限域 计算,但选取有限域进行计算的话,无法验证 ,可以改为模拟题目中的过程,验证所有数是否相等。
时间复杂度 。
- 1
信息
- ID
- 11962
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 5
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者