zoukankan      html  css  js  c++  java
  • Codeforces714B【读题-水】

    题意:
    给你n个数,然后让你自己选择X,先选择一些+一次;然后选择一些-一次。
    思路:
    首先要去判断是不是不需要处理或者处理一次的情况;
    其实这样的话,你不可能选x然后最小和最大都加减一次,所以肯定是(min+max)/2;
    所以在判断一下;

    #include <bits/stdc++.h>
    using namespace std;
    typedef __int64 LL;
    const int N=1e5+10;
    LL a[N];
    int n;
    
    int main()
    {
        LL mi,mx;
        scanf("%d",&n);
        mi=1e9+10;
        mx=-1;
        for(int i=1;i<=n;i++)
        {
            scanf("%lld",&a[i]);
            mi=min(a[i],mi);
            mx=max(a[i],mx);
        }
        LL tmp;
        bool flag=true;
        tmp=mx-mi;
        for(int i=1;i<=n;i++)
        {
            if(a[i]<mx)
            {
                if((a[i]+tmp)!=mx)
                {
                    flag=false;
                    break;
                }
            }
        }
        if(flag)
        {
            puts("YES");
            return 0;
        }
        if((mx+mi)%2)
        {
            puts("NO");
            return 0;
        }
        flag=true;
        tmp=(mx+mi)/2;
        for(int i=1;i<=n;i++)
        {
            if(a[i]>tmp&&a[i]!=mx)
            {
                puts("NO");
                return 0;
            }
            if(a[i]<tmp&&a[i]!=mi)
            {
                puts("NO");
                return 0;
            }
        }
        puts("YES");
        return 0;
    }
  • 相关阅读:
    SSM整合
    SpringMVC学习笔记
    Spring笔记
    Spring之AOP在XML中的配置方法
    Spring之AOP的注解配置
    Mybatis学习笔记
    css学习笔记
    DOM技术
    Javascript学习笔记
    Hive导出复杂数据到csv文件
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934791.html
Copyright © 2011-2022 走看看