zoukankan      html  css  js  c++  java
  • Week8 CSP-M2 A

    题目描述:

    相较于咕咕东,瑞神是个起早贪黑的好孩子,今天早上瑞神起得很早,刷B站时看到了一个序列a,他对这个序列产生了浓厚的兴趣,他好奇是否存在一个数K ,使得一些数加上K,一些数减去 K,一些数不变,使得整个序列中所有的数相等,其中对于序列中的每个位置上的数字,至多只能执行一次加运算或减运算或是对该位置不进行任何操作。由于瑞神只会刷B站,所以他把这个问题交给了你!

    输入输出规模及约定:

    输入第一行是一个正整数T表示数据组数。 接下来对于每组数据,输入的第一个正整数N表示序列 的长 度,随后一行有N个整数,表示序列 a。

    输出共包含T行,每组数据输出一行。对于每组数据,如果存在这样的K,输出"YES",否则输出“NO”。 (输出不包含引号)

    思路:

    很显然,如果不同的数超过了四个,就不可以。

    如何判断一共有多少个不同的数?用桶?

    更好的办法是用集合。

    代码:

    #include <cstdio>
    #include <iostream>
    #include <set>
    #include <vector>
    #include <algorithm>
    typedef long long ll;
    using namespace std;
    set<ll> S;
    vector<ll> v;
    int main()
    {
    	int T; cin>>T;
    	while(T--)
    	{
    		S.clear();
    		v.clear();
    		int n; cin>>n;
    		for(int i=1;i<=n;i++)
    		{
    			ll val;
    			scanf("%lld",&val);
    			S.insert(val);
    		}
    		if(S.size()>3) cout<<"NO"<<endl;
    		else if(S.size()==1||S.size()==2) cout<<"YES"<<endl;
    		else
    		{
    			for(auto x:S)
    				v.push_back(x);
    			sort(v.begin(),v.end());
    			if(v[1]-v[0]==v[2]-v[1]) cout<<"YES"<<endl;
    			else cout<<"NO"<<endl;
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    某图片网站整合yolo图片特征相似图片获取
    MySQL导入数据报错 ERROR 1794 (HY000) at line 22 -- 解决
    apache-commons-lang3之StringUtils使用集锦
    swf格式的flash文件变更md5
    Linux常见场景的shell使用
    tp5在apache下能访问,但放到nginx下报404
    template-web.js 使用二
    jquery实现动态添加html代码
    JQuery的父、子、兄弟节点
    this
  • 原文地址:https://www.cnblogs.com/qingoba/p/12719465.html
Copyright © 2011-2022 走看看