专栏文章

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

P14566题解参与者 6已保存评论 9

文章操作

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

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

P14566 题解

思路

以下令 xx 为序列 aa 中的严格次大值,yy 为最大值,zz 为最小值。
  • p>yp > y 时,答案为 yzy-z
  • x<pyx < p \le y 时,取 p=yp=y 最优,答案为 xx。(在 yzxy-z \le x 的前提下满足上式。容易发现 yz>xy-z>x 的时候这种情况一定不优。)
  • pxp \le x 时,答案一定小于 pp,即小于第二种情况。
所以答案为 max(x,yz)\max(x,y-z)
特别的,当序列中所有元素均相等(没有严格次大值)时,答案为 00

代码

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[214514];
main(){
//	freopen("mod4.in","r",stdin);
//	freopen("mod4.out","w",stdout); 
    int t;
    cin>>t;
    while(t--){
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++)cin>>a[i];
		sort(a+1,a+n+1);
		int l=n-1;
		a[0]=-1;
		while(a[l]==a[n])l--;
		if(l==0)cout<<0;
		else cout<<max(a[l],a[n]-a[1])<<"\n";
	}
    return 0;
}

评论

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

正在加载评论...