抽屉原理:

        
桌上有十个苹果,要把这十个苹果放到九个抽屉里,不管如何放,我们会发现至少会有一个抽屉里面至少放两个苹果。

        
这一现象就是我们所说的“抽屉原理”。

        
假设每个抽屉代表一个集合,每个苹果就能够代表一个元素,假如有n+1个元素放到n个集合中去,当中必然有一个集合里至少有两个元素。

       最差原则:

        
最差原则,即考虑全部可能情况中。最不利于某件事情发生的情况。


         比如,有300人到招聘会求职,当中软件设计有100人。市场营销有80人,財务管理有70人。人力资源管理有50人。

         那么至少有多少人找到工作才干保证一定有70人找的工作专业同样呢?


         此时我们考虑的最差情况为:软件设计、市场营销和財务管理各录取69人。人力资源管理的50人所有录取。则此时再录取1人就能保证有70人找到的工作专业同样。

         因此至少须要69*3+50+1=258人。







对于HDOJ1205这道题,就用到了抽屉原理:

吃糖果

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 28562    Accepted Submission(s): 8120

Problem Description
HOHO。最终从Speakless手上赢走了全部的糖果。是Gardon吃糖果时有个特殊的癖好。就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃还有一种,这样;但是Gardon不知道是否存在一种吃糖果的顺序使得他能把全部糖果都吃完?请你写个程序帮忙计算一下。
 
Input
第一行有一个整数T。接下来T组数据。每组数据占2行,第一行是一个整数N(0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。
 
Output
对于每组数据,输出一行,包括一个"Yes"或者"No"。
 
Sample Input
2
3
4 1 1
5
5 4 3 2 1
 
Sample Output
No
Yes
Hint
Hint

Please use function scanf

   问题分析:



      1. 应当从数量最多的一种糖開始吃( 若最多的一种糖都吃不完。一定不满足条件 );



      2. 仅仅要最多的糖果能被吃完,糖果就能够被吃完( 相当于插入隔板 )。



         例:5个A,4个B,3个C。2个D;



      我们有吃法: A B A B A B A B A ;之后的糖果能够随便插入空当( 不同种的插入 );

      并且我们发现:最大糖果数越多。之后可插入的空当就越多;



      所以我们仅仅须要推断最大的糖果是否能被吃完就可以;



      3. 进一步分析。我们发现。仅仅要满足 max-(sum-max)<=1。就能把最大糖果数吃完;

          [ max是最大一种糖果数,sum是总糖果数,sum-max是除最大一种糖果剩下的数量 ]





AC代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
__int64 i,n,sum,max,temp;
int T;
scanf("%d",&T);
while(T--)
{
sum=0;max=-1;
scanf("%I64d",&n);
for(i=0; i<n; i++)
{
scanf("%I64d",&temp);
sum+=temp;
if(temp>=max)
{
max=temp;
}
}
if(max-(sum-max)<=1) printf("Yes\n");
else printf("No\n");
}
return 0;
}

由于数据比較大,所以用到了64位整型。


最新文章

  1. 初学PHP
  2. 热烈庆祝华清远见成功自主研发Farsight TV 智能机顶盒
  3. FlashDevelop快捷键
  4. ASP.NET获取客户端IP/用户名等信息
  5. VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制
  6. 九度oj 1528 最长回文子串
  7. Android 高级UI设计笔记16:ViewStub的应用
  8. Hibernate逍遥游记-第10章 映射继承关系-003继承关系树中的每个类对应一个表(joined-subclass)
  9. hdu4293Groups
  10. resin config 中文(resin.xml)
  11. Code Complete阅读笔记(一)
  12. 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
  13. windows phone 页面导航(6)
  14. Selenium基础知识
  15. 程序员如何避免996、icu?欢迎来讨论一下。
  16. Linux基本命令总结(二)
  17. 使用Word批量删除换行和空白行
  18. SD卡分区查看(u-boot下)
  19. Java从零开始学二十九(大数操作(BigIntger、BigDecimal)
  20. HTML 三角符号

热门文章

  1. 1.ABP使用boilerplate模版创建解决方案
  2. cURL介绍
  3. Android金额输入EditText共通方法
  4. 【BJOI2014/bzoj4530】大融合
  5. 关于vue属性绑定的问题
  6. 2017.8.1 Noip2018模拟测试赛(十七)
  7. LOJ#2303. 「NOI2017」蚯蚓排队
  8. h5页与ios通信
  9. WebRTC VideoEngine综合应用示例(一)——视频通话的基本流程(转)
  10. 同源策略Same-origin policy