《Mathematical Olympiad——组合数学》——抽屉原理
抽屉原理可以说是组合数学中最简单易懂的一个原理了,其最简单最原始的一个表达形式:对于n本书放到n-1个抽屉中,保证每个抽屉都要有书,则必存在一个抽屉中有2本书。但是这个简单的原理在很多问题中都能够巧妙的应用到,融合将问题一步步抽象转化来接近抽屉原理的原始模型,是用好抽屉原理的关键。
问题一:两个半径相等的圆盘上各有一个内接正2n边形,每个正2n边形的顶点有一半染上黄色,一般染上蓝色,将这一个圆盘放在另一个圆盘上并使得两个正2n边形的顶点均重合,这样得到2n对顶点,如果一对顶点中两个重合的顶点颜色相同,则称其为“匹配点对”。证明:存在一种放置方式,使得至少有n对匹配点对。
证明:我们首先从任意一种重合方式开始,用a1表示当前方式含有的匹配点对的个数,然后我们将其中一个圆盘旋转2n - 1次,每次旋转的角度π/n,这样我们便得到了多有的放置方法——{a1,a2,a3……a(2n)}。考察所有情况匹配点对的总和,利用简单的计数原理,我们得到等式:a1 + a2 + a3+……+a(2n) = 2n*n,由此再利用抽屉原理,得证。
问题二:正整数1~200分成50个集合。证明:可以从其中某一个集合中找出三个数,它们形成三角形的三边之长。
证明:我们考虑100~200这101个数字,分到50个集合当中,必然存在3个数字分到某个集合当中,考察分布在[100,200]的整数,任取三个数都是满足三角形三边定理的,得证。
问题三:一次射箭比赛共有30名选手参加。将靶子分为两个区域,规定:射中区域一得10分,射中区域二得5分,未射中靶子不得分,每名选手射16箭。比赛结束后,统计显示射中区域二的箭超过50%,射中区域一和未射中靶子的箭数相同。证明:有两名选手得分相同。
证明:我们设第i个人射中区域一、区域二、未射中的箭数分别是ai、bi、ci.则首先有∑ai = ∑ci < 16*30 /4 = 120.
第i个选手的得分可以这样表示:10ai + 5bi = 5ai + 5(ai + bi) = 5ai + 5(16 - ci) = 80 + 5(ai - ci)。
现在考虑反证法,假设30个选手的分数各不相同,则ai - ci有30个各不相同的取值。考虑到ai - ci∈[-16 , 16],由抽屉原理得,存在满足ai-ci>0或ai - ci < 0的组数大于等于15的情况,我们以ai - ci > 0为例,我们将ai - ci按照严格递增的顺序排列,则有ai - ci >=i , 所以ai >= i.
因此,对于满足ai - ci > 0的ai,有不等式∑ai >= 1 + 2 + 3+……+15 = 120成立,这与已知事实矛盾,因此假设不成立。
证毕。
证明:
《Mathematical Olympiad——组合数学》——抽屉原理的更多相关文章
- 《Mathematical Olympiad——组合数学》——染色问题
恢复 继续关于<Mathematical Olympiad——组合数学>中问题的分析,这一篇文章将介绍有关染色的问题. 问题一: 将一些石头放入10行14列的矩形方格表内,允许在每个单元 ...
- 2021.12.06 P1450 [HAOI2008]硬币购物(组合数学+抽屉原理+DP)
2021.12.06 P1450 [HAOI2008]硬币购物(组合数学+抽屉原理+DP) https://www.luogu.com.cn/problem/P1450 题意: 共有 44 种硬币.面 ...
- 《Mathematical Olympiad——组合数学》——操作和游戏
这篇文章,我们开始对奥数中有关操作和游戏的问题进行分析和讨论,其实在信息学竞赛中涉及到的一些博弈问题(分析必胜策略)的问题(例如巴什博弈.尼姆博弈),本质上来讲,就是组合数学当中的组合游戏,并不是真正 ...
- CodeForces485A——Factory(抽屉原理)
Factory One industrial factory is reforming working plan. The director suggested to set a mythical d ...
- uva202:循环小数(循环节+抽屉原理)
题意: 给出两个数n,m,0<=n,m<=3000,输出n/m的循环小数表示以及循环节长度. 思路: 设立一个r[]数组记录循环小数,u[]记录每次的count,用于标记,小数计算可用 r ...
- hdu 3303 Harmony Forever (线段树 + 抽屉原理)
http://acm.hdu.edu.cn/showproblem.php?pid=3303 Harmony Forever Time Limit: 20000/10000 MS (Java/Othe ...
- poj2356 Find a multiple(抽屉原理|鸽巢原理)
/* 引用过来的 题意: 给出N个数,问其中是否存在M个数使其满足M个数的和是N的倍数,如果有多组解, 随意输出一组即可.若不存在,输出 0. 题解: 首先必须声明的一点是本题是一定是有解的.原理根据 ...
- POJ- Find a multiple -(抽屉原理)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6452 Accepted: 2809 Special Judge D ...
- 51nod 1103 N的倍数(抽屉原理)
1103 N的倍数 题目来源: Ural 1302 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍 ...
随机推荐
- (转)smarty实现多级分类的方法
--http://www.aspku.com/kaifa/php/44679.html 这篇文章主要介绍了smarty实现多级分类的方法,涉及循环读取的技巧,非常具有实用价值,需要的朋友可以参考下 ...
- Dictionary 总结
foreach (KeyValuePair<int, string> kvp in myDictionary) {...} Dictionary<string, string> ...
- 打造属于前端的Uri解析器
今天和大家一起讨论一下如何打造一个属于前端的url参数解析器.如果你是一个Web开发工程师,如果你了解过后端开发语言,譬如:PHP,Java等,那么你对下面的代码应该不会陌生: $kw = $_GET ...
- jQuery 停止动画
jQuery stop() 方法用于在动画或效果完成前对它们进行停止. 停止滑动 点击这里,向上/向下滑动面板 实例 jQuery stop() 滑动演示 jQuery stop() 方法. jQue ...
- C#堆栈原理(我有两个例子测试你到底会不会)
背景 上次写了一篇文章关于try finnally的一些疑问(被我用windows live覆盖了,草),后来经过大神们解释,我明白了在我理解了try.finnally运行原理后,还欠缺的就是关于值类 ...
- Spring在代码中获取bean的几种方式(转:http://www.dexcoder.com/selfly/article/326)
方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObj ...
- Swift中的dispatch_once 单例模式
以下有三种方法实现单例模式,支持懒初始化和线程安全 全局变量 结构 dispatch_once 全局变量: 这里使用了全局变量而非类变量,是因为不支持类变量 private let _Singleto ...
- prototype/constructor/__proto__之prototype
1任何对象都有__proto__属性 属性值Object2并不是所有对象都有prototype属性.只有方法对象(构造函数)以及基本数据类型还有Array,有prototype属性;并且所有方法(对象 ...
- Canvas中点到点的路径运动
/*随机生成两个点,然后以两点为端点,进行运动,主要使用了SetInterval,对画布进行不断的擦除描绘的操作*/1 <!DOCTYPE html> <html xmlns=&qu ...
- 拓扑排序-DFS
拓扑排序的DFS算法 输入:一个有向图 输出:顶点的拓扑序列 具体流程: (1) 调用DFS算法计算每一个顶点v的遍历完成时间f[v] (2) 当一个顶点完成遍历时,将该顶点放到一个链表的最前面 (3 ...