[HDU1205]吃糖果

Description

-HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。

-Input:第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。

-Output:对于每组数据,输出一行,包含一个"Yes"或者"No"。

Solution

1.分析题目,我们发现是一种简单的排列组合问题,其实是在问数目不是最大的所有糖果能否将数目最大的一种糖果相互隔开;

2.根据鸽巢原理,maxn个糖果至少需要maxn-1个隔板,即只需判断sum-maxn是否大于等于maxn-1即可,整理式子,我们得到判断条件:sum+2≥maxn*2;

3.本体数据量较多建议使用读入优化,数据范围我是用的是unsigned long long,貌似long long也能过;

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
inline unsigned long long rd(){//读优
unsigned long long x=0;
bool f=true;
char c;
c=getchar();
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x; }void check(){
unsigned long long i,j,n,sum=0,max=0;
n=rd();
for(i=1;i<=n;++i){
j=rd();
if(j>max)max=j;
sum+=j;
}
if(sum+2>max*2) printf("Yes\n");
else printf("No\n");
}
int main(){
unsigned long long i,n;
n=rd();
for(i=1;i<=n;++i)check();
return 0;
}

有关鸽巢原理可以参考我的博客:http://www.cnblogs.com/COLIN-LIGHTNING/p/8439555.html

最新文章

  1. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)
  2. hdu 3839 Ancient Messages (dfs )
  3. Bug跟踪方法
  4. x01.FileProcessor: 文件处理
  5. AAL template: ROI to brain lobe
  6. 2016年12月21日 星期三 --出埃及记 Exodus 21:16
  7. JDBC Driver
  8. 简单的powershell 批量生成身份证复印件
  9. 服务器环境搭建系列(二)-Tomcat篇
  10. C# DataGridView添加新行的2个方法
  11. onMouseDown onMouseUp onMouseMove(移动鼠标图像大小变化)
  12. Android 基础知识点(持续更新)
  13. ubuntu下使用ngrok外网映射
  14. Node.js:url
  15. django-将数据库数据转换成JSON格式(ORM和SQL两种情况)
  16. 电脑只能上QQ,不能上网浏览网站怎么解决
  17. Java数据持久层框架 MyBatis之API学习三(XML 映射配置文件)
  18. vue端口号被占用如何解决
  19. 基于Spark自动扩展scikit-learn (spark-sklearn)(转载)
  20. 初学Python——介绍一些内置方法

热门文章

  1. huawei oceanstor
  2. (转)Linux 命令--查看物理CPU个数、核数、逻辑CPU个数
  3. 使用JMeter代理录制app测试脚本
  4. 第209天:jQuery运动框架封装(二)
  5. HDU4786_Fibonacci Tree
  6. WebGL画一个10px大小的点
  7. C++解析(27):数组、智能指针与单例类模板
  8. 【刷题】BZOJ 3365 [Usaco2004 Feb]Distance Statistics 路程统计
  9. sql语句查询各门课程平均分的最大值
  10. 【BZOJ1088】扫雷(递推)