Description

有n个人,每个人都戴着一顶帽子。当然,帽子有不同的颜色。

现在,每个人都告诉你,他看到的所有其他人的帽子共有多少种颜色,请问你有没有符合所有人的描述的情况。

Input

第一行一个整数n。

第二行n个整数,第i个数ai表示第i个人看到的所有其他人帽子颜色的种数。

Output

若存在一种情况满足条件,输出"Yes",否则输出"No"。(均不含引号)

题解:

看起来就像是(玄学)结论题……

首先很明显的是,最大值和最小值的差不能大于1。

那我们先考虑最大值等于最小值的情况,首先全部都是1或者n-1都是合法的。

那其他的,每种颜色至少要有两顶或以上的帽子(任取一种可以看到的为另外几个和自己一样的和其他不同的)

那只要 \({n \over 颜色数}\geq 2\),即为合法。

那如果最大值不等于最小值,那么小的的那些帽子的颜色肯定都是独一无二的。

大的颜色肯定每种颜色的帽子都至少要有两顶。

那么把小的颜色总数减去,剩下的颜色填到剩下的空位去,看看能不能使剩下的颜色每种都有至少两个。

CODE:

#include<iostream>
#include<cstdio>
using namespace std; int n,x,cnt=0;
int minv=1e9,maxv=-1e9; int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&x);
if(x==minv)cnt++;
if(x<minv)minv=x,cnt=1;
if(x>maxv)maxv=x;
}
if(maxv-minv>1)return printf("No"),0;
if(maxv==minv){
if(minv==n-1)return printf("Yes"),0;
return printf(n/minv>=2?"Yes":"No"),0;
}
int a=n-cnt,b=maxv-cnt;
if(b<1)return printf("No"),0;
return printf(a/b>=2?"Yes":"No"),0;
}

最新文章

  1. redis lua
  2. ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
  3. js,css小知识点记录
  4. .Net控件经验集合
  5. Ajax跨域通信方法
  6. Cocos2d-x 2.x项目创建
  7. dede列表标签递增数字生成
  8. ListView之BaseAdapter
  9. Webpack学习系列(一)
  10. div 初始高度,并随内容高度变化
  11. 初步了解关于js跨域问题-jsonp
  12. PHPStorm+PHPStudy配置XDebug
  13. Cannot find wrapper assembly for type library &quot;ADODB&quot;. in VS2017
  14. 动态、静态编译以及MD、MDd、MT、MTd编译
  15. OpenStack 存储服务 Cinder存储节点部署LVM(十六)
  16. php---截取描述方法
  17. Android Studio 安装在Windows10中的陷阱
  18. Hyperledger Fabric 1.0 从零开始(十三)——orderer分布式方案
  19. CXF生成调用webservice的客户端
  20. ubuntu下查找jdk安装位置

热门文章

  1. 微信小程序text标签
  2. mui的选项卡js选中指定项
  3. myeclipse10.5 crack(2012-12-27-bd 写的日志迁移
  4. python之格式化
  5. POJ1426-Find The Multiple(搜索)
  6. Diycode开源项目 NotificationActivity
  7. HDU 1847 Good Luck in CET-4 Everybody!(SG函数)
  8. Jetty,Tomcat对MIME协议的配置参数说明
  9. 微信公众开发api接口
  10. Linux之如何进行固定IP、DNS等设置