组合数学
文章平均质量分 59
Lbbbbpro029
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
20160329 HDU1521 排列组合(指数型生成函数)
指数型生成函数用于解决从n个堆中取东西进行排列的问题。 用double进行处理然后取整。 #include #include #include using namespace std; double jc(int n) { double ans=1.0; for(int i=1;i<=n;i++) ans*=i; return ans; } i原创 2016-03-31 19:02:16 · 332 阅读 · 0 评论 -
20160329 HDU2082 找单词(生成函数)
运用生成函数求对于有权值的多个堆,每个对应的权值有多少种组合方法。 #include #include using namespace std; int main() { int T; int inp[100]; long long c1[100],c2[100]; cin>>T; while(T--) { for(int i原创 2016-03-31 19:07:47 · 268 阅读 · 0 评论 -
20160330 HDU1695 GCD(欧拉函数+容斥原理)
题意: 求1-b与1-d之间有多少组gcd=k的一对数。 思路: 令b=b/k,d=d/k,原题就变为了求1-b与1-d之间有多少互质的一对数。 假设b 对于[b+1,d]中,将每个数进行素因子分解,用容斥定理(酷炫的二进制)可以求出所有不互质的对数,再用总数减掉。 两部分的和即为所求。 #include #include using namespace std; long l原创 2016-03-31 19:23:05 · 464 阅读 · 0 评论 -
20160330 HDU5651 xiaoxin juju needs help(组合数公式)
题意: 随意变换所给字符串顺序,能产生多少回文串。 思路: 只有有一个或没有奇数个相同的字母的串才能产生回文串。 然后回文串的一半进行分析,多个堆进行一个长度为l/2的排列,用组合数公式求解。 #include #include using namespace std; long long C[501][501]; const int mod=1e9+7; void solve(原创 2016-03-31 19:28:09 · 357 阅读 · 0 评论 -
20160331 UVA11806 Cheerleaders(组合数公式+容斥原理)
题意: 给一个n*m的方针,求把k个石子放在阵中并且保证4条边上都有石子有多少种情况。 思路: 用容斥原理将上下左右四条边没有的情况求出拿总数减掉即可。 #include using namespace std; const int mod=1000007; int C[510][510]; void solve() { for(int i=0;i<510;i++)原创 2016-03-31 19:34:58 · 418 阅读 · 0 评论
分享