学习笔记:相等序列(STL中set的使用)

#include<iostream>
#include<set>
#include<vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int num;
        cin>>num;
        set<int> s;
        while(num--)
        {
            int temp;
            cin>>temp;
            s.insert(temp);
        }
        vector<int> vec;
        vec.assign(s.begin(),s.end());//STL模板中assign()函数相当于一个拷贝函数,将set里面的值拷贝给vec
            if(vec.size()!=3)
            {
                if(vec.size()<=2)
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
            }
            else
            {
                if(vec[2] - vec[1] == vec[1] - vec[0])
                    cout<<"YES"<<endl;
                else
                    cout<<"NO"<<endl;
            }

    }
    return 0;
}

题目描述:
题目给定a1,a2…an,这样一个长度为n的序列,现在你可以给其中一些元素加上一个值x(只能加一次),然后可以给另外一些值减上一个值x(只能减一次),剩下的元素不能再进行操作。问最后有没有可能找到一个值x使所有元素的值相等。

输入描述:
输入第一行为一个整数k,代表有k个序列(k<100),接下来有2*k行:
偶数行为一个整数n,代表给定序列的长度(1<=n<=100,000)
奇数行包含n个元素,a1,a2…an,代表序列中的元素(0<=ai<=100,000)

输出描述:
输出k行,每行一个YES或者NO
示例1
输入
1
5
1 3 3 2 1
输出
YES

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值