鴿巢原理(初識)(純演算法)

2021-07-15 22:04:52 字數 873 閱讀 2164

一.什麼是

鴿巢原理(抽屜原理)若把n個物體放在n - 1個抽屜中,至少有乙個抽屜中放了兩個物體。

二.  特點

只能用於解決存在性問題

三.例題

例一: 在邊長為1的三角形放5個點,至少有兩個點之間的距離<=1/2

解析:將乙個三角形分為4個三角形,在四個三角形中放5個點,則至少有兩個點在同乙個三角形中,這兩個點之間的距離最長為1/2,得證

例二:某次會議n位代表參加,至少有兩個人認識的人數相等。注意認識是相互的

解析:首先討論每個人都至少認識乙個人的情況,這種情況下,認識的人數為1到n-1.參加會議的人數n得證

假設有人乙個人都不認識,這時剩下的人中認識的人的個數只能是1-n-2,人數為n-1.依次類推,知道將所有乙個人都不認識的alone people消掉,就優惠產生鴿巢原理的情況

例三:從1到2n中,選n + 1個數,至少有一對數,其中乙個數是另乙個數的倍數

解析:將選中的n+1個數中所有的2都除掉,即除以2^k,由於1-2n中只有n個奇數,一定有一對數的奇數形式相等的。這兩個數分別是2^m*equal,2^n*equal,因此一定乙個數是另乙個數的倍數

例四:從1-2n中,選n+1個數,至少有一對數是互素的

解析:首先明確一點,相鄰的兩個整數一定是互素的,證明如下:

假設這兩個整數為n,n+1.假設他們不是互素的,有公共因子q

n = p1 * 1,n + 1 = p2 * q

n+1 - n = q(p2 - p1)

q(p2-p1) = 1

其中p2,p1均為整數,q >=2,可證不等

可將這2n個數分為n分每分為(1,2)(3,4)……(2n-1,2n),從n分中選n+1個數,則至少有兩個數來自同乙份,至少有兩個數是互素的

鴿巢原理小結

最基礎的原理便是n 1的物體放到n個盒子裡,至少有乙個盒子放了兩個物體。poj 2356 有n個數,從中選出幾個數的和是n的倍數。不得不說數學是個神奇的東西,結論是任意的n個數,必然能找到連續的m個數之和是n的倍數。接下來簡單證明一下,組合數學書中,黑書都有介紹。sk表示a1 a2 ak,如果sk是...

演算法 鴿巢排序

鴿巢排序,名字很生動形象,其實就是把待排序的陣列中相同的元素扔到同乙個鴿巢。洛谷1177 排序 題目描述 將讀入的 n 個數從小到大排序後輸出。輸入格式 第 1 行為乙個正整數 n。第 2 行包含 n 個空格隔開的正整數 a i 為你需要進行排序的數,資料保證了a i 不超過10 9。輸出格式 將給...

基礎演算法 鴿巢原理 打表

給乙個n m的矩陣,每個小方格都可以取三種顏色。問有多少種染色方法可以使得矩陣中至少一對 x1,y1 與 x2,y2 滿足 輸入 t,代表t組樣例 每組樣例輸入n和m 輸出 染色方案數 打表 鴿巢原理 打表 可以手動打表 很難 也可以想辦法 進行打表 鴿巢原理 400個人一定有兩個人在同一天生日 通...