zoukankan      html  css  js  c++  java
  • 2017/11/22模拟赛

    水(water
    【问题描述】
    T1 还是出水一点吧, 希望大家都能 AC
    闲人村里有 n 个人闲着没事干, 他们各自从家里拿了一顶帽子戴
    上出来聚会。 聚会结束后, 作为村里的眼科大夫, 你去每个人家里家
    访, 第i 个人告诉你他看见其他人戴的帽子的颜色一共有 ai 种。 你想
    知道这些人里是不是已经有人眼睛不好使了, 但你没有去聚会所以不
    知道每个人帽子的颜色, 你需要判断是否存在一种合法的戴帽方案使
    得所有人给出的信息都合法。
    【输入格式】
    多组数据, 第一行一个正整数T 表示数据组数。
    每组数据第一行一个正整数 n , 第二行 n 个正整数 ai
    【输出格式】
    每组数据输出一行“Yes” 或“No” 表示答案。
    【样例输入】
    2 3 1
    2 2
    3 1
    1 2
    【样例输出】
    Yes
    No
    【数据范围】
    对于 20%的数据, 1<= n <= 5
    对于另外 40%的数据, T = 1
    对于 100%的数据, T = 101<= ai <= n <= 10^5

    题解:分3种情况:

    ①信息>=3种:必定不合法。

    ②信息只有1种:若2种信息相差大于1,不合法;最多情况下,每2个为同色,答案小等于n/2即可;或全部不同色,则答案为n-1。

    ③信息有2种:则较小的必定为单个颜色,较大的必定同种颜色数大等于2,判断见程序。

    代码如下:

     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 int main()
     5 {
     6     freopen("water.in","r",stdin);
     7     freopen("water.out","w",stdout);
     8     int T; scanf("%d",&T);
     9     while(T--){
    10         int n,n1=0,n2=0,ct1=0,ct2=0;
    11         bool ok=false;
    12         scanf("%d",&n);
    13         for(int i=1;i<=n;i++){
    14             int a; scanf("%d",&a);
    15             if(a==n1) ct1++;
    16             else if(a==n2) ct2++;
    17             else if(!n1) n1=a,ct1++;
    18             else if(!n2) n2=a,ct2++;
    19             else ok=true;
    20         }
    21         if(ok){puts("No");continue;}
    22         if(n1>n2&&n2!=0) swap(ct1,ct2),swap(n1,n2);
    23         if(n2-n1>1){puts("No");continue;}
    24         if(!n2){
    25             if(n1<=n/2){puts("Yes");continue;}
    26             if(n1==n-1){puts("Yes");continue;}
    27             puts("No");
    28         }
    29         else{ 
    30             if(ct2==1){puts("No");continue;}
    31             if(n2>ct1&&n2<=ct1+ct2/2){puts("Yes");continue;}
    32             puts("No");
    33         }
    34     }return 0;
    35 }
  • 相关阅读:
    为什么你不是优秀的人?是这个原因么?
    我们应选择怎样的IT公司
    如何获得加薪
    隐藏为了适时出现
    如何通过一个问题,完成最成功的技术面试
    阿里负责人揭秘面试潜规则
    应聘互联网公司的简历应该是怎么样的?
    linq 图解
    Lambda表达式的前世今生
    Lambda应用设计模式
  • 原文地址:https://www.cnblogs.com/Beginner-/p/7885782.html
Copyright © 2011-2022 走看看