aia

第三章鸽巢原理部分习题答案

痴心易碎 提交于 2020-02-18 12:20:02
我看的是那本老外写的黑黑的书 《组合数学第五版》 。老外写书的时候答案好像没有怎么写,我作为 帅B 就帮大家写写吧( 郑重声明 :我不是卖书的就是给大家看看长啥样^_-) 题目 (题号与书上的题号对应,答案在后面)  2.证明从1-200中取100个数且选取的这些数中有一个小于16,那么存在两个选取的整数,使得他们中的一个能被另一个整除。  4.如果集合{1,2,…2n}中选择n+1个整数总存在两个整数他们之间( 没有“最多”二字 )相差1。  5.如果从集合{1,2,…3n}中选择n+1个数那么么总存在两个数它们之间 最多 差2。  7.对任意给定的52个数,要么二者的和能被100整除,要么二者的差能被100整除  8.利用鸽巢原理证明,有理数 m n \frac{m}{n} n m ​ 展开的十进制小数是循环的。例如 34478 99900 = 0.345 , 125 , 125 , 125 , 125 , 12..... \frac{34478}{99900}=0.345,125,125,125,125,12..... 9 9 9 0 0 3 4 4 7 8 ​ = 0 . 3 4 5 , 1 2 5 , 1 2 5 , 1 2 5 , 1 2 5 , 1 2 . . . . .  9.一个房间有10个人,他们当中没有人超过60岁(年龄只能以整数给出)但又至少1岁.   证明

Atcoder arc093F

北慕城南 提交于 2019-12-11 09:55:33
简单的容斥DP。 显然 1 1 1 所在位置是不重要的,不妨设 p 1 = 1 p_1=1 p 1 ​ = 1 。那么我们可以发现 1 1 1 要比赛的人是另外 N N N 个大小分别为 2 0 2^0 2 0 , 2 1 2^1 2 1 , . . . ... . . . , 2 N − 1 2^{N-1} 2 N − 1 的有序集合的最小值。 1 1 1 能获胜即等价于这些集合的最小值均不为 A i A_i A i ​ 。 直接算不好做,考虑容斥,钦定若干个 A i A_i A i ​ 为某些集合的最小值。按 i i i 从大往小考虑,设 F [ i ] [ s ] F[i][s] F [ i ] [ s ] 表示考虑了 A i A_i A i ​ ~ A M A_M A M ​ , s s s 的二进制位对应大小的集合最小值已经被钦定为 A i A_i A i ​ ~ A M A_M A M ​ 中的人的贡献和,转移简单枚举一下是否钦点 A i A_i A i ​ 为某个集合的最小值,是的话系数是组合数,容易计算。 时间复杂度 O ( N M 2 N ) \mathcal O(NM2^N) O ( N M 2 N ) 。 # include <bits/stdc++.h> # define MOD 1000000007 using namespace std ;