zoukankan      html  css  js  c++  java
  • Codeforces Round #371 (Div. 2)B. Filya and Homework

    题目链接:http://codeforces.com/problemset/problem/714/B

    题目大意:

      第一行输入一个n,第二行输入n个数,求是否能找出一个数x,使得n个数中的部分数加上x或部分数减去x ,n个数相等。

    例如:5

       1 3 3 2 1

    输出:

       YES

    Init:

       x=1 情况,第一个数和最后一个数+x,第二三个数减去x ,则这n个数都为2(相等),故输出“YES”

    解题思路:

      对于刚才举的例子 可知 n个数只有三个元素 1 2 3 只要使得 2-1==3-2 即可满足条件

      用一个数组存储n 个数,进行排序和查重。

      如果查重后的元素<=2 即只有一个元素或两个元素则肯定满足条件输出“YES”

      或者查重后的元素有三个 且 narr[1]-narr[0]==narr[2]-narr[1] (这里用到了排序) 则也输出“YES”

    其他情况输出NO.

    AC Code:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int na[1000001];
     4 int main()
     5 {
     6     int n,i;
     7     while(scanf("%d",&n)!=EOF)
     8     {
     9         for(i=0; i<n; i++)
    10             scanf("%d",&na[i]);
    11         sort(na,na+n);
    12         int cut=unique(na,na+n)-na;
    13         if(cut<=2||(cut==3&&(na[1]-na[0]==na[2]-na[1])))
    14             cout<<"YES"<<endl;
    15         else
    16             cout<<"NO"<<endl;
    17     }
    18     return 0;
    19 }
  • 相关阅读:
    Elementui:选择框
    Cesium之Cesium3DTileStyle
    Cesium粒子系统:雨雪云效果
    Cesium之3dtiles模型选择问题
    3dtiles贴地
    Android ListView异步加载图片
    Android的硬件加速
    Android ANR
    每天一点Linux 查看Ubuntu的版本号
    Android log system
  • 原文地址:https://www.cnblogs.com/A--Q/p/5885921.html
Copyright © 2011-2022 走看看