鸽巢原理及其扩展——Ramsey定理
第一部分:鸽巢原理
咕咕咕!!!
然鹅大家还是最熟悉我→
a数组:but 我也很重要
$:我好像也出现不少次
以上纯属灌水
文章简叙:鸽巢原理对初赛时的问题求解以及复赛的数论题目都有启发意义。直接的初赛考察一般在提高组出现。相当于抽屉。
别名:鸽笼原理。狄利克雷抽屉原理。
最简单的一种形式:有m+1m+1m+1只鸽子,mmm个笼子,那么至少有一个笼子有至少两只鸽子。当然,换个角度来说:有m−1m-1m−1只鸽子,mmm个笼子,那么至少有一个笼子是空的。
初级加强:有mmm个笼子,k∗m+1k*m+1k∗m+1只鸽子,那么至少有一个笼子有至少k+1k+1k+1只鸽子。
高级加强:令
- a1,a2,a3...ama_1,a_2,a_3...a_ma1,a2,a3...am
- 为正整数。
- ififif 我们将
- a1+a2+a3+...+an−n+1a_1+a_2+a_3+...+a_n-n+1a1+a2+a3+...+an−n+1
- 个鸽子放入nnn个笼子里,thenthenthen,
||第一个笼子至少有a1a_1a1只鸽子||第二个笼子至少有a2a_2a2只鸽子||第三个笼子至少有a3a_3a3只鸽子||…||第mmm个笼子至少有ama_mam只鸽子
鸽巢原理的应用
一位洛谷oieroieroier要用121212周的时间准备 CTSC ~~CTSC~~ CTSC ,为了练习,他每天至少要刷一题,因为题目有难度,他每星期刷题无法超过131313题。请你证明:存在连续的若干天期间,这位oieroieroier恰好刷了111111题
开始证明:
1.我们可以令a1a_1a1表示第一天所刷的题数,a2a_2a2表示前两天所刷的题数,a3a_3a3表示前三天所刷的题数.之后以此类推
2.而题目说,由于每天都要至少刷1题,所以数列
- a1,a2,a3,a4,...,a84a_1,a_2,a_3,a_4,...,a_{84}a1,a2,a3,a4,...,a84
- 严格递增。另有a1>=1a_1>=1a1>=1.又每周最多刷13题,故a84<=13∗12=156a_{84}<=13*12=156a84<=13∗12=156.
3.因此又有:
- 1<=a1<a2<a3<...<a84<=1561<=a_1<a_2<a_3<...<a_{84}<=1561<=a1<a2<a3<...<a84<=156.
4.同理,
- a1+11,a2+11,a3+11,...,a84+11a_1+11,a_2+11,a_3+11,...,a_{84}+11a1+11,a2+11,a3+11,...,a84+11
- 同样是一个严格递增序列。范围:
- 12<=a1+11<a2+11<a3+11<...<a84+11<=16712<=a_1+11<a_2+11<a_3+11<...<a_{84}+11<=16712<=a1+11<a2+11<a3+11<...<a84+11<=167
5.我们把两个序列合起来看:
- a1,a2,a3,...,a84,a1+11,a2+11,a3+11,...,a84+11a_1,a_2,a_3,...,a_{84},a_1+11,a_2+11,a_3+11,...,a_{84}+11a1,a2,a3,...,a84,a1+11,a2+11,a3+11,...,a84+11
- 一共168168168个数。其中每一个数都是111到167167167之间的一个整数。
6.根据鸽巢原理可得,其中必有两个数相等!!!
7.既然
- a1,a2,a3,...,a84a_1,a_2,a_3,...,a_{84}a1,a2,a3,...,a84
- 中必然无相等的两个数,
- 那么a1+11,a2+11,a3+11,...,a84+11a_1+11,a_2+11,a_3+11,...,a_{84}+11a1+11,a2+11,a3+11,...,a84+11
- 中同理。那么,必然存在一个xxx和一个yyy,使得
- ax=ay+11a_x=a_y+11ax=ay+11;
8.从而得出结论:这个oieroieroier在第
- y+1,y+2,y+3,...,xy+1,y+2,y+3,...,xy+1,y+2,y+3,...,x
- 天内一共刷了111111道题
应用二
证明:在边长为222的等边三角形中放上555个点。则至少存在两个点,他们之间的距离小于等于111.
1.我们先画出一个边长为222的等边三角形。
2.然后把三条边中点两两相连。就形成了这张图。
3.那么根据鸽巢原理,必然有两个点在一个边长为111的小三角形里。
4.而我们知道,边长为111的等边三角形里处处距离都小于等于111
5.于是问题就解决了
应用三
已知n+1n+1n+1个正整数,它们全都小于或等于2n2n2n,证明当中一定有两个数是互质的。
1.要证明这个问题,我们就要利用一个互质的特性:两个相邻整数互质。
2.有了这个突破口,于是我们可以构造n个鸽巢,每一个里依次放入
- 1,2,3,...,2n1,2,3,...,2n1,2,3,...,2n
- 这2n个数中的两个数。
3.也就是说,我们要在这其中取出n+1n+1n+1个数。
4.根据鸽巢原理,无论如何,我们都会抽空一个鸽巢。
5.一个鸽巢中的两个数肯定互质,所以问题就解决了。
扒栗史:匈牙利大数学家厄杜斯(PaulErdous,1913 - 1996) 向当年年仅111111岁的波萨(LouisPósa)提出这个问题,而小波萨思考了不足半分钟便能给出正确的答案。
有趣的小(leng)知(xiao)识(hua):
山东高考201720172017年有545454万人。而人的头发大约有8−128-128−12万根。那么必然有两人的头发数量相同。
好了,现在来一道初赛真题收(dian)心(di):
【NOIP2010 提高组】记TTT为一队列,初始时为空,现有n个总和不超过323232的正整数依次入队,如果无论这些数具体为什么值,都能找到一种出队的方式,使得存在某个时刻队列TTT中的数之和恰好为999,那么nnn的最小值是_______________
1.第一眼看到此题,蒟蒻就知道自己只能根据结果推过程了
2.刚开始看了一眼答案:181818.
3.于是就根据这个开始推导过程。我们可以令aia_iai表示前iii个数的和,并约定:a0=0a_0=0a0=0.
4.题目要求求出最小的nnn,使得存在0<=x<y<=n0<=x<y<=n0<=x<y<=n满足ay=ax+9a_y=a_x+9ay=ax+9;
5.于是我们可将aaa数组看做鸽子,用不能同时取的一组(差为999)的集合构造笼子,
6.构造方法如下:一共有n=18n=18n=18个集合按此方式选取:
- 0,9、1,10、2,11、...、8,17、18,27、19,28、20,29、...、23,32、24、25、26{0,9}、{1,10}、{2,11}、...、{8,17}、{18,27}、{19,28}、{20,29}、...、{23,32}、{24}、{25}、{26}0,9、1,10、2,11、...、8,17、18,27、19,28、20,29、...、23,32、24、25、26。
7.由题意可知,我们一旦在某个集合中取了两个元素,thenthenthen 一定存在某个时刻队列TTT中数的总和恰好为999.
8.于是由鸽巢原理,我们可以得知:n=18n=18n=18一定满足条件.
但是题目要让我们求出最小值,为了保险起见(都看答案了还保什么险):
1.我们还要证明一下n=17n=17n=17不可行。
2.然鹅我们只需要举出反例即可:
- 1 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1
3.说明:因为每到了888个111就被101010隔断,故不可行。
第二部分:Ramsey定理
扒栗史:此定理由Frank Plumpton Ramsey(弗兰克·普伦普顿·拉姆齐,1903−19301903-19301903−1930)提出.
- 此定理有一个广为流传的例子:6 个人中至少存在3人相互认识或者相互不认识。
- 转换:该定理等价于证明这6个顶点的完全图的边,用红、蓝二色任意着色,必然至少存在一个红色边三角形,或蓝色边三角形
证明如下:
1、首先,把这6个人设为A、B、C、D、E、F六个点。由A点可以引出AB、AC、AD、AE、AF五条线段。
2、设:如果两个人认识,则设这两个人组成的线段为红色;如果两个人不认识,则设这两个人组成的线段为蓝色。
3、由鸽巢原理可知:这五条线段中至少有三条是同色的。不妨设AB、AC、AD为红色。若BC或CD为红色,则结论显然成立。若BC和CD均为蓝色,则若BD为红色,则一定有三个人相互认识;若BD为蓝色,则一定有三个人互相不认识。
以下部分正在补充,本文未完成
后记:部分内容来自于一本通
鸽巢原理及其扩展——Ramsey定理的更多相关文章
- POJ2356 Find a multiple 抽屉原理(鸽巢原理)
题意:给你N个数,从中取出任意个数的数 使得他们的和 是 N的倍数: 在鸽巢原理的介绍里面,有例题介绍:设a1,a2,a3,……am是正整数的序列,试证明至少存在正数k和l,1<=k<=l ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)
B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- poj 2356 Find a multiple(鸽巢原理)
Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...
- poj2356 Find a multiple(抽屉原理|鸽巢原理)
/* 引用过来的 题意: 给出N个数,问其中是否存在M个数使其满足M个数的和是N的倍数,如果有多组解, 随意输出一组即可.若不存在,输出 0. 题解: 首先必须声明的一点是本题是一定是有解的.原理根据 ...
- NYOJ 417 死神来了 鸽巢原理
死神来了 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有一天,王小子在遨游世界时,遇到了一场自然灾害.一个人孤独的在一个岛上,没有吃的没有喝的.在他饥寒交迫将要死亡时 ...
- HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Codeforces.618F.Double Knapsack(构造 鸽巢原理)
题目链接 \(Description\) 给定两个大小为\(n\)的可重集合\(A,B\),集合中的元素都在\([1,n]\)内.你需要从这两个集合中各选一个非空子集,使它们的和相等.输出方案. \( ...
随机推荐
- C#6.0一些特性
1.自动属性初始化的改进 声明属性时可以直接进行初始化 public int id {get;set;}=10; 自动属性是省去了get和set内部的过程,而直接用set;get;这样的语句代替, 把 ...
- CheckSynchronize实现的不必要的复杂
在system.classes单元中,CheckSynchronize在ThreadLock上持续调用TMonitor的Exit和Enter以保护SyncList. 因为代码做的第一件事是换出Sync ...
- 一条命令,秒秒钟完成MD5、SHA1校验,这就叫效率!
相信很多奋斗在运维战线的小伙伴们经常会遇到版本升级之类的问题.笔者之前所在的公司每次进行版本发布的时候都会附带MD5校验哈希值,每次升级之前一般都要核对MD5哈希值的,刚刚开始的时候对Linux并不是 ...
- 修改zookeeper jvm参数
在zkServer.sh中,增加以下参数: start) echo -n "Starting zookeeper ... " if [ -f $ZOOPIDFILE ...
- 浅谈Java中的命名规范
现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...
- Tido c++树状数组知识讲解(转载)
树状数组可以用来动态计算前缀和,可以随时进行更新 而普通的前缀和只是静态的
- IIS7上传4M文件以上文件出现“Post大小超出允许的限制”错误解决方法
在web.config文件中的system.web节点中添加如下这句,即40M <system.web> <httpRuntime maxRequestLength = " ...
- Sentinel2A影像监测家乡油菜长势!!
首先当然得为我的家乡打一个广告啊,湖南省衡南县宝盖镇双河口村,非常有名的油菜花种植基地,从下面的图就可以看出来,欢迎各位童鞋前往观光旅游,家乡人民非常nice,非常热情.... 我的老家就住在双河口村 ...
- 基于STM32之UART串口通信协议(三)接收
一.前言 1.简介 回顾上一篇UART发送当中,已经讲解了如何实现UART的发送操作了,接下来这一篇将会继续讲解如何实现UART的接收操作. 2.UART简介 嵌入式开发中,UART串口通信协议是我们 ...
- zabbix2.4汉化
zabbix的2.4版本安装完后,这里的语言界面选择没有中文,其实是这个版本把中文的屏蔽了. [root@zabbix-server opt]# vim /var/www/html/include/l ...