PE 434 Rigid graphs && HDU 5729 Rigid Frameworks
来源:互联网 发布:图片字幕制作软件 编辑:程序博客网 时间:2024/05/17 02:27
给定n*m的方格,每个方格只能在其中一条对角线上加边,求使所有的方格稳固的加边方案数。
n,m≤10
具体:https://projecteuler.net/problem=434
转化:求左边有n个点,右边有m个点的联通二分图的数目。
PS:2016多校#1的题。虽说有原题,但对有人刷PE这事还是蛮钦佩的。
连通图计数
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cassert>#include<ctime>#include<bitset>#include<queue>#include<set>#define inf (1<<30)#define INF (1ll<<62)#define prt(x) cout<<#x<<":"<<x<<" "#define prtn(x) cout<<#x<<":"<<x<<endlusing namespace std;typedef long long ll;template<class T>void sc(T &x){ x=0;char c;int f=1; while(c=getchar(),c<48)if(c=='-')f=-1; do x=x*10+(c^48); while(c=getchar(),c>47); x*=f;}template<class T>void nt(T x){ if(!x)return; nt(x/10); putchar('0'+x%10);}template<class T>void pt(T x){ if(x<0)putchar('-'),x=-x; if(!x)putchar('0'); else nt(x); putchar('\n');}const int mod=1000000007;const int maxn=10;ll dp[16][16],f[16][16];ll C[16][16];ll pow3[104];ll qpow(ll a,ll b){ ll c=1; for(;b;b>>=1,a=(a*a)%mod) if(b&1)c=(c*a)%mod; return c;}ll fac[16];int main(){// freopen("pro.in","r",stdin);// freopen("chk.out","w",stdout); pow3[0]=1; for(int i=1;i<=100;i++)pow3[i]=pow3[i-1]*3%mod; fac[0]=1; for(int i=1;i<=maxn;i++)fac[i]=fac[i-1]*i%mod; for(int i=1;i<=maxn;i++){ for(int j=1;j<i;j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod; C[i][0]=C[i][i]=1; } for(int i=0;i<=maxn;i++) for(int j=0;j<=maxn;j++) f[i][j]=1;// for(int i=1;i<=maxn;i++){ for(int j=1;j<=maxn;j++){ dp[i][j]=pow3[i*j]-f[i][j]; if(dp[i][j]<0)dp[i][j]+=mod; for(int k=maxn;k>=i;k--){ for(int l=maxn;l>=j;l--){ for(int t=min(k/i,l/j);t>=1;t--){ ll res=f[k-i*t][l-j*t]; for(int a=k-i*t,b=l-j*t;a<k&&b<l;a+=i,b+=j) res=dp[i][j]*C[a+i][i]%mod*C[b+j][j]%mod*res%mod; res=res*qpow(fac[t],mod-2)%mod; f[k][l]=(f[k][l]+res)%mod; } } } } } int n,m; while(~scanf("%d%d",&n,&m)) pt(dp[n][m]); return 0;}
0 0
- PE 434 Rigid graphs && HDU 5729 Rigid Frameworks
- hdu 5729 Rigid Frameworks
- hdu 5279 Rigid Frameworks
- [二分图] hdu 5729 Rigid Frameworks
- HDU 5729 Rigid Frameworks (from: 2016 Multi-University Training Contest)
- HDU 5729 Rigid Frameworks(组合计数,递推)
- [HDU 5729] Rigid Frameworks (二分图联通方案计数)
- HDU 5729 Rigid Frameworks(组合数学+dp)
- 【HDU 5729】Rigid Frameworks(组合数学+DP)
- HDU 5729 Rigid Frameworks (连通二分图计数DP)
- HDU 5729 Rigid Frameworks (求二分图连通方案数)
- hdu Rigid Frameworks(刚体图->二分图计数)
- 2016 Multi-University Training Contest 1 1007 Rigid Frameworks
- hdu5729 Rigid Frameworks(连通二分图计数dp)
- 刚性需求 rigid demand
- 3.Rigid Bodies
- Rigid Bodies(2)
- Chipmunk Rigid Bodies:cpBody
- android studio编写运行java main
- 【翻译自mos文章】设置了RemoveIPC=yes 的RHEL7.2 会crash掉Oracle asm 实例和Oracle database实例
- node.js把jade改为html的方法
- android 如何编译release版本的应用
- 走遍中国 —— 东三省
- PE 434 Rigid graphs && HDU 5729 Rigid Frameworks
- Linux3.0.35支持emmc5.0
- MyCat:开源分布式数据库中间件
- 基尔霍夫矩阵
- PhpStorm 快捷键大全 PhpStorm 常用快捷键和配置
- [121] Best Time to Buy and Sell Stock
- C 字符数组与字符串的使用及加结束符'\0'的问题
- oracle数据库解锁和锁定用户命令
- 格式化输入与输出