题意
给定一个非负整数序列
a,选定一个正整数
p,使得
a 中所有元素对
p 取模后极差最大,输出这个最大的极差。
思路
我们要使这个极差最大,就要让最小值尽可能地小。
显然,只要将一个数对
p 取模,那么最终结果必定小于
p。
因此仅有
p≥maxi=1nai 的时候存在最优解,因为如果
p 再往小的取,那么最大值只会越来越小,极差无法得到最大化。
如果
p>maxi=1nai,那么所有数对
p 取模最终结果都不变,此时极差为
(maxi=1nai)−(mini=1nai)。
如果
p=maxi=1nai,那么由于最大值与
p 相等,取模后最大值就会变为
0。此时原来的
严格次大值变为最大值,原来的最大值变为最小值,极差为该序列的
严格次大值。
最终答案取两种情况的最大值即可。
Code
代码简单,就不放了。