专栏文章

题解:P14566 【MX-S12-T1】取模

P14566题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min33z3z
此快照首次捕获于
2025/12/01 19:47
3 个月前
此快照最后确认于
2025/12/01 19:47
3 个月前
查看原文

题目简述

天崩开局J炸S炸
数组 aa,正整数 pp,把每个 aia_i 除以 pp 的余数放进数组 bb,你的得分就是 bb 中max减min。问最大得分是多少
第一步:看看 p 很大时的情况 如果 pp 比数组中最大的数还要大,那么每个数除以 pp 的余数就是它自己。 这时候得分就是: max(a)min(a)\Large\max(a) - \min(a)
第二步:看看 p 比较小时的情况 余数只能在 00p1p-1 之间,所以最大值减最小值最大只能是 p1p-1。 如果 pp 很小,这个上界也很小,就舍弃掉
那问题来了: 如何让差值变大? 我们想要让余数中有一个是 p1p-1(最大),还有一个是 00(最小),这样差值就是 p1p-1 什么时候会出现 p1p-1 呢?当某个数 xx 满足 xmodp=p1x \bmod p = p-1,也就是 x+1x+1 能被 pp 整除 什么时候会出现 00 呢?当某个数 yy 能被 pp 整除 所以我们要找的 pp 要同时是某个 aia_i 的约数,也是某个 aj+1a_j+1 的约数
直接找所有可能的 pp 太麻烦,数据太大时会超时。 我们想想,其实最大得分只有两种可能:
直接取 pp 很大,得分是 max(a)min(a)\max(a) - \min(a)
pp 约为最大值的一半,这样可能得到大约 max(a)2\lfloor \frac{\max(a)}{2} \rfloor 的得分 那最终就是: max(max(a)min(a), max(a)2)\LARGE \max\left( \max(a) - \min(a),\ \left\lfloor \frac{\max(a)}{2} \right\rfloor \right)
第二次写文,求通

评论

0 条评论,欢迎与作者交流。

正在加载评论...