
组合数学
Benzema67
北京邮电大学学生
展开
-
BOJ 288
诶,数学弱爆了..比赛时候没推出来组合数学里的母函数(x+x^2+……+x^n)^m的展开式中x^k的系数整理得x^m * (1-x^n)^m * (1-x)^(-m)就可以得到x^k的系数#include int main(){ int n, m, k; while (scanf("%d%d%d", &n, &m, &k) != EOF) {原创 2012-02-08 18:00:48 · 848 阅读 · 0 评论 -
BOJ 1454
组合数学问题#include #include #include #include #define mod 20130303typedef long long ll;using namespace std;char s[1010];int d,len; //之前RE因为这里d,len都定义成char类型...int vis[10];ll c[1010][10原创 2013-03-16 00:08:00 · 933 阅读 · 0 评论 -
UVALIVE 4004
最近码力略渣,敲题总是WA,考虑不全,还是要加强码力本题是一道组合数学统计问题问的是给一个序列,求他在所有波浪序列中排名第几注意各种限制,各种特判.....#include #include #include typedef long long ll;using namespace std;char s[1000];ll dp[10][原创 2013-03-27 13:01:16 · 907 阅读 · 0 评论 -
poj 1095
简单递归,一个小错误浪费一下午、、、、左子树的权值比右子树大!看清题、、、、#include#includetypedef long long ll;ll cat[50];ll sum[50];void solve(int num,int rank){ int i,tem=rank; if(num==1){ printf("X"); return ; } for(原创 2012-07-03 18:08:33 · 971 阅读 · 0 评论 -
一道趣题(catalan数)
DescriptionThe director of a new movie needs to create a scaled set for the movie. In the set there will beN skyscrapers, with distinct integer heights from 1 toN meters. The skyline will原创 2012-07-12 19:18:01 · 913 阅读 · 0 评论 -
hdu 3924
这道题是poj1095的加强版#include#includetypedef long long ll;ll a[30],s[30];void init(){ int i,j,k; a[0]=a[1]=1; s[0]=0; for(i=2;i<=20;i++) for(j=0;j<i;j++) for(k=0;k<=i-1-j;k++) a[i]+=a[j]*原创 2012-07-04 12:20:26 · 1023 阅读 · 0 评论 -
Catalan数
Catalan(n)=c(2*n,n)/(n+1) (n=0,1,2,3....)常见处理的问题:1.括号化问题。 矩阵链乘: P=a0×a1×a2×a3×……×an,共有(n+1)项,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(Catalan(n)种)二叉树个数:有N个节点的二叉树共有多少种情形?(Catalan(n)种)原创 2012-04-17 12:07:20 · 887 阅读 · 0 评论 -
Codeforces Round #104 (Div. 2) E - Lucky Subsequence
这个题其实就是个dp(类似背包),但是一些细节还是让我做了一晚上。这个题学习了组合数取模(逆元法) 补充知识:逆元的求法(a/b) mod p=a*(b逆) mod pb*x=1(mod p) x就是b的逆元而b逆可以利用扩展欧几里德或欧拉函数求得:1).扩展欧几里德:b*x+p*y=1 有解,x就是所求2).欧拉函数:b^(p-1)=1(mod p),故b*b^(原创 2012-01-25 00:37:13 · 1241 阅读 · 0 评论 -
第二类斯特林数
s(m,n)表示把m个有区别的球放到n个相同的盒子中,且无一空盒,其不同的方案数。s(m,n)=ns(m-1,n)+s(m-1,n-1) (m>=n)s(m,n)=0 (ms(0,0)=1;long long data[N][N];void stirling(int m, int n){ int min, i, j; memset(data,0,s原创 2012-04-17 11:23:00 · 6508 阅读 · 0 评论 -
生成函数/拆分数计算
计算整数n的拆分数用的是生成函数的方法。首先来看一下生成函数所解决的问题(1+x+...+x^n+...)(1+x+...+x^n+...)...(1+x+..+x^n+...) 这个母函数可以这样理解(转化为经典的 不可区分球 放 可区分盒 中的问题):每一个括号表示一个盒内放的球的情况在计算拆分数时需要用一个ferrers图像性质:n拆分成m个数的和的拆分原创 2012-04-17 10:58:53 · 3847 阅读 · 0 评论 -
组合数
n个球m个盒子是否空盒方案数无区别有区别无C(n-1,m-1)(隔板法)无区别有区别有C(n+m-1,n)(m-1个隔板,n个球共n+m+1个位置选n个位置)有区别无区别无S(n,m)原创 2012-04-17 00:09:05 · 959 阅读 · 0 评论 -
生成排列和组合
1 . 无重复元素的全排列当然stl有next_permutation()函数,用起来更方便#include#includeusing namespace std;int n,a[100],count;void permutation(int k){ if(k==n){ for(int i=1;i<=n;i++) printf("%d ",a[i]); printf原创 2012-03-30 19:21:51 · 763 阅读 · 0 评论 -
母函数的应用 :HDU 1028/ HDU 1328 / HDU 1085
母函数的应用HDU 1028#include#includeusing namespace std;int n,c1[200],c2[200];int main(){ int i,j,k; while(scanf("%d",&n)!=EOF){ memset(c2,0,sizeof(c2)); for(i=0;i<=n;i++) c1[i]=1; for(i=原创 2012-04-01 10:58:03 · 955 阅读 · 0 评论 -
XMU 1255
http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1255整数划分问题 996ms险过..(递归法)#include#include#includeusing namespace std;int n,mod;long long dps[500][500];long long dp(int n,int m){ //n表示要原创 2012-03-31 21:26:11 · 721 阅读 · 0 评论