HDU6397】的更多相关文章

HDU6397用小于n的m个数组成k,求方案数mod 998244353如果没有n的限制,直接用隔板法求就可以因为m个数中可以为0,所以不妨先都放上一个1,转化成不能为0的m个数来凑k+m,即C(k+m-1,m-1);加了限制之后就用容斥原理去维护就好了至少有i个不小于n的方案数为C(m,i)*C(k+m-1-i*n,m-1);total-至少有一个不小于n+至少有2个不小于n的... 一定要小心阶乘的初始化啊,f[0]=1; 哭了 #include<iostream> #include<…
题意 从$0$到$n-1$的数字里可重复的取至多$m$个数的和等于$k$的方案数. 思路 显然的生成函数的思路为构造 $(1+x+x^{2}+...+x^{n-1})^{m}$ 那么$x^{k}$的系数即答案.等比数列求和后得到 $ \frac {(1-x^n)^m} {(1-x)^m}$ 对分子二项式展开得到 $(1-x^n)^m = \sum_{i=0}^m C_m^{i}(-1)^i * x^{n*i}$ 对分母根据泰勒展开得到 $(1-x)^{-m} = \sum_{j = 0}^{\i…
http://acm.hdu.edu.cn/showproblem.php?pid=6397 原问题的本质是问m个元素的多重集S,每一种类型的对象至多出现n-1次的S的k组合的个数是多少? 等价于 x1+x2+...+xm=k  0<xi<=n-1  的解的个数 当xi没有上限(xi<=n-1)时由隔板法得C(k+m-1,m-1) 而有上限时,方法是构造母函数(1+x+....+x^(n-1))^m  答案是x^k的系数 对母函数用等比数列求和再二项式展开加泰勒展开得答案.orz(解法来…
题目传送门 题意:给出n,m,k,用m个0到n-1的数字凑出k,问方案数,mod一个值. 题目思路: 首先如果去掉数字范围的限制,那么就是隔板法,先复习一下隔板法. ①k个相同的小球放入m个不同的盒子,每个盒子不为空的种类数:k-1个空隙中插入m-1个板子,C(k-1, m-1) ②k个相同的小球放入m个不同的盒子,可以允许有的盒子为空种类数:我们再加上m个球,按照①式不为空求解,因为分割完后,每个盒子减去1,就是当前问题的解,即:C(k-1+m, m-1); 而现在有了n这个限制,也就是说之前…
最近做了不少的组合数的题这里简单总结一下下 1.n,m很大p很小 且p为素数p要1e7以下的 可以接受On的时间和空间然后预处理阶乘 Lucas定理来做以下是代码 /*Hdu3037 Saving Beans*/ #include<cstdio> #include<cstring> #include<iostream> #define ll long long #define maxn 1000010 using namespace std; ll T,n,m,p,f[…
学长写的 F. Fantastic Graph "Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a bipartite graph is a fantastic graph. He has two fantastic numbers, and he wants to let all the degrees to between the two boundar…