HDU 1695 GCD (数论-整数和素数,组合数学-容斥原理)
题目大意:
从1~a区间取一个数x,从1~b区间取一个数y,问你gcd(x,y)=k有多少种方案?其中x1,y1和y1,x1算同一种方案。
解题思路:
那么就是 从1~b/k 取一个数x , 与 从1~d/k 取一个数y 互质的方案数,利用容斥,枚举 x,求出y的个数即可。...
分类:
其他好文 时间:
2014-07-31 20:59:37
阅读次数:
274
母函数又叫生成函数,原是数学上的一个名词,是组合数学中的一个重要理论。
生成函数是说,构造这么一个多项式函数g(x),使得x的n次方系数为f(n)。
对于母函数,看到最多的是这样两句话:
1.“把组合问题的加法法则和幂级数的乘幂对应起来。”
2.“把离散数列和幂级数一 一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造。 “...
分类:
其他好文 时间:
2014-07-31 13:36:36
阅读次数:
206
1.概念 生成函数即母函数,是组合数学中尤其是计数方面的一个重要理论和工具。生成函数有普通型生成函数和指数型生成函数两种,其中普通型用的比较多。形式上说,普通型生成函数用于解决多重集的组合问题,而指数型母函数用于解决多重集的排列问题。母函数还可以解决递归数列的通项问题(例如使用母函数解决斐波那契数....
分类:
其他好文 时间:
2014-07-31 09:35:06
阅读次数:
284
题目链接:uva 1478 - Delta Wave
题目大意:对于每个位置来说,可以向上,水平,向下,坐标不能位负,每次上下移动最多为1, 给定n问说有多少种不同的图。结果对10100取模。
解题思路:因为最后都要落回y=0的位置,所以上升的次数和下降的次数是相同的,并且上升下降的关系满足出栈入栈的关系。即卡特兰数。
所以每次枚举i,表示有i个上升,i个下降,用组合数学枚举出位置,...
分类:
其他好文 时间:
2014-07-30 23:59:15
阅读次数:
701
放苹果
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 25952
Accepted: 16509
Description
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。...
分类:
移动开发 时间:
2014-07-30 10:00:53
阅读次数:
262
Turn the pokers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1279 Accepted Submission(s): 466
Problem Description
During summer v...
分类:
其他好文 时间:
2014-07-29 21:53:22
阅读次数:
400
HDU 1796 How many integers can you find(组合数学-容斥原理)
题目大意:
给你1个数n,再给m个数,问你1~n-1里面有多少个数能被这m个数的任意一个数整除。
解题思路:
利用容斥原理就可以解决。...
分类:
其他好文 时间:
2014-07-29 17:54:42
阅读次数:
197
POJ 2355 Find a multiple(组合数学-抽屉原理)
题目大意:
有n个数,找出一个方案满足:从中选出任意多的数字使得它们的和对n求余为0
解题思路:
用sum[i]记录前 i 项的和。
(1)如果存在某个sum[i]%n==0 ,那么就已经找到了,就是前i项。
(2)如果不存在,则sum[i]%n的取值范围为1~n-1 那么n项sum必然有 sum[i]%n==sum[j]%n,这时候(sum[j]-sum[i])%n=0,也就是 第i+1项到第j项的和对n求余为0,也满足条件了。...
分类:
其他好文 时间:
2014-07-29 12:50:17
阅读次数:
238
题目大意:众所周知冒泡排序算法多数情况下不能只扫描一遍就结束排序,而是要扫描好几遍。现在你的任务是求1~N的排列中,需要扫描K遍才能排好序的数列的个数模20100713。注意,不同于真正的冒泡排序算法,只要数列有序就立刻停止,而不用再检验一遍。估计多数人都是找规律吧,先看出递推,然后求出通项……这个...
分类:
其他好文 时间:
2014-07-29 10:40:06
阅读次数:
270
题目:n个人中取出k个人组成一个小组,并且其中有一名组长,问有多少种取法。
分析:分治、组合数学。F(n) = C(n,1)*1 + C(n,2)*2 + ... = sum(C(n,i)*i)
推导:C(n,i)*i=n*...*(i+1)/ [i*(i-1)*...*1] * i=n * [(n-1)*...*i]/ [i*...*1]=C(n-1,i)*n...
分类:
其他好文 时间:
2014-07-28 15:47:43
阅读次数:
226