
组合数学
@bigfive
这个作者很懒,什么都没留下…
展开
-
HDU - 4135 Co-prime
题目连接 HDU - 4135 Co-prime 题意 输入a,b,n,要求区间[a,b]中与n互质的数的个数(1<=a<=b<=10^15 ; 1<=n<=10^9)。 思路 判断两个数是否互质,首先想到辗转相除法,然而这里的a,b相当大,枚举a,b间的每一个数并判断和n是否互质必然超时。 既然判断两个数互质方法单一,那么我们可以从反面考虑,首先...原创 2018-09-11 23:04:52 · 137 阅读 · 0 评论 -
HDU-1028 Ignatius and the Princess III
HDU-1028 题意 输入一个整数n,要求输出n的分拆数。 思路一 母函数,要求n的分拆数,就相当于有n种面值的钱币各无数张,面值为1~n,问你用这些钱币组成n元的方案数。 设用n种面值的钱币组成k元的方案数为ak,则序列a0,a1,a2…ak…an的生成函数为 g(x)=a0+a1*x+a2*x^2+…+ak*x^k+…+an*x^n+…… 同时 g(x)=(1+x+x^2+x...原创 2018-09-05 20:19:19 · 176 阅读 · 0 评论 -
HDU-1398 Square Coins
题意 输入一个n,求n的分拆平方数,例如: 10=1+1+1+1+1+1+1+1+1+1 10=4+1+1+1+1+1+1 10=4+4+1+1 10=9+1 因此10有四种组合,所以输入10时输出4。 思路 母函数裸题,与hdu1028相似,只不过那里是求n的分拆数,这里是分拆平方数,所以只要把i改为i*i即可。 #include<iostream> using...原创 2018-09-05 21:43:06 · 123 阅读 · 0 评论 -
HDU-1085 Holding Bin-Laden Captive!
题意 给出三种钱币(面值分别为1,2,5)的数量,问你最小的不能用这些钱币拼出的钱币值。 思路 母函数模板题。 !!!值得注意的一点是程序截止的条件,如果输入的三个数都为0程序就截止,一开始以为有一个0就停止,WA了很多次。。。 #include<iostream> #include<cstring> using namespace std; const int ...原创 2018-09-05 23:17:14 · 129 阅读 · 0 评论 -
HDU-1171 Big Event in HDU
HDU-1171 Big Event in HDU 题意 有n种设备,输入每种设备的价格和数量,现要将这些设备尽可能平均分成两份,问你两份的价值总和分别是多少,大的在前,小的在后。 思路 因为设备不能分割,所以其价值就不能分割,所以要想分成尽可能相等的两份,首先要知道这些设备能够组成哪些价值,可以用母函数求解,最后从这些设备的总价值的一半开始遍历,如果当前价值能被组成,输出结果...原创 2018-09-06 19:50:07 · 112 阅读 · 0 评论 -
Cheerleaders UVA - 11806
题目连接 Cheerleaders UVA - 11806 题意 输入n,m,k,代表有一个n*m的棋盘,有k个棋子,有多少种摆放方式?要求棋盘第一行,最后一行,第一列,最后一列都必须有棋子。 思路 从正面不太好入手,所以我们可以用容斥原理从反面考虑,设A1为第一行没有棋子的方法数,A2为第二行没有棋子的方法数,A3为第一列没有棋子的方法数,A4为最后一列没有棋子的方法数。那么最...原创 2018-09-12 21:37:11 · 305 阅读 · 0 评论