随笔分类 -  组合数学

hdu 3335
摘要:定理1>令(X,≤)是一个有限偏序集,并令r是其最大链的大小,则X可以被划分成r个但不能再少的反链.其对偶定理称为Dilworth定理:定理2>令(X,≤)是一个有限偏序集,并令m是反链的最大的大小,则X可以被划分成m个但不能再少的链.最后:链的最少划分数=反链的最长长度用二分图方法求最小路径覆盖,即可 阅读全文

posted @ 2011-08-10 16:01 宇宙吾心 阅读(242) 评论(0) 推荐(0)

poj 3046
摘要:母函数。代码:#include<iostream>#include<fstream>using namespace std;int t,n,s,b;int dp[100001];int a[1001];void read(){// ifstream cin("in.txt"); int i,j,k,right,end; cin>>t>>n>>s>>b; for(i=1;i<=n;i++) { cin>>j; a[j]++; } right=0; dp[0]=1; for(i=1;i&l 阅读全文

posted @ 2011-03-28 12:21 宇宙吾心 阅读(363) 评论(0) 推荐(0)

poj 1882
摘要:简单dp,注意输出顺序。代码:#include<iostream>#include<fstream>using namespace std;bool dp[11][1001];int a[11][1001];void read(){// ifstream cin("in.txt"); int i,j,k,s,t,ans,ans1,num,n,f,right,s1; while(1){ cin>>num; if(num==0) return; cin>>k; ans=0;ans1=0; for(i=1;i<=k;i++) 阅读全文

posted @ 2011-03-28 11:03 宇宙吾心 阅读(304) 评论(0) 推荐(0)

poj 3734
摘要:生成函数,费马小定理,快速幂。费马小定理:若p为素数,则对于任意小于p的正整数a,有a^(p-1)≡1(mod p).代码:#include<iostream>#include<fstream>#include<cmath>using namespace std;int solve(int s){ int i,j,k; if(s==1) return 2; if(s==0) return 1; i=solve(s/2); if(s%2) { return (i*i*2)%10007; } else return (i*i)%10007;}void read( 阅读全文

posted @ 2011-03-27 22:34 宇宙吾心 阅读(440) 评论(0) 推荐(0)

导航