题目
思路
本题一开始以为只是简单的求平均数即可,但是发现这样漏掉了很多情况。均衡之后发现,如果四个数不一样,那么无论如何都不会存在K满足条件,相反的,如果序列只有两个数不同,那么肯定满足情况。如果正好有三个数不同,那么只有在第二个数是平均数的时候才满足。
先排序,再用unique函数返回去重之后序列的第一个元素的地址,也就是它减去首元素就是不同元素的个数
代码
#include<iostream>
#include<algorithm>
#include<vector>
#define inf 1e15+10
using namespace std;
int main()
{
int t;
cin>>t;
for(int ii=0;ii<t;ii++){
vector<long long> a;
int n;
cin>>n;
for(int i=0;i<n;i++){
long long aa;
cin>>aa;
a.push_back(aa);
}
sort(a.begin(),a.end());
int cnt=unique(a.begin(),a.end())-a.begin();
if(cnt>3)
cout<<"NO"<<endl;
if(cnt<3)
cout<<"YES"<<endl;
if(cnt==3)
{
if(a[0]+a[2]==2*a[1])
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}