[容斥+Purfer编码] 51Nod1806 wangyurzee的树
来源:互联网 发布:linux sh是什么意思 编辑:程序博客网 时间:2024/06/05 11:52
很久以前看过
具体来说,若有
#include<cstdio>#include<cstring>#include<algorithm>#define Fir first#define Sec second#define mp(x,y) make_pair(x,y)using namespace std;typedef long long LL;const int maxn=1000005,MOD=1000000007;LL ans,fac[maxn],inv[maxn],fac_inv[maxn];bool vis[20];inline LL C(int n,int m){ return (n<m||n<0||m<0)?0:fac[n]*fac_inv[m]%MOD*fac_inv[n-m]%MOD; }int n,m,a[maxn];pair<int,int> q[20];inline LL Pow(LL a,int b){ LL res=1; for(;b;b>>=1,a=a*a%MOD) if(b&1) res=(res*a)%MOD; return res;}int main(){ freopen("51nod1806.in","r",stdin); freopen("51nod1806.out","w",stdout); fac[0]=1; for(int i=1;i<=1000000;i++) fac[i]=fac[i-1]*i%MOD; inv[1]=1; for(int i=2;i<=1000000;i++) inv[i]=(LL)(MOD-MOD/i)*inv[MOD%i]%MOD; fac_inv[0]=1; for(int i=1;i<=1000000;i++) fac_inv[i]=fac_inv[i-1]*inv[i]%MOD; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) scanf("%d%d",&q[i].Fir,&q[i].Sec); if(n==1){ if(m==1) return printf("0"),0; return printf("1"),0; } for(int s=0;s<=(1<<m)-1;s++){ LL _sum=0,_prod=1,cnt=0; bool pd=true; memset(vis,0,sizeof(vis)); for(int i=1;i<=m&pd;i++) if((s>>i-1)&1){ if(vis[q[i].Fir]) pd=false; vis[q[i].Fir]=true; _sum+=q[i].Sec-1; (_prod*=fac_inv[q[i].Sec-1])%=MOD; cnt++; } if(!pd) continue; if(n-2-_sum<0||n-cnt<0) continue; (ans+=(LL)((cnt&1)?-1:1)*fac[n-2]*fac_inv[n-2-_sum]%MOD*_prod%MOD*Pow(n-cnt,n-2-_sum)%MOD)%=MOD; //printf("%lld\n",(ans+MOD)%MOD); } printf("%d\n",(ans+MOD)%MOD); return 0;}
阅读全文
0 0
- [容斥+Purfer编码] 51Nod1806 wangyurzee的树
- 51nod 1806 wangyurzee的树(purfer,容斥原理)
- 51nod 1806 wangyurzee的树[purfer][容斥]
- 51NOD 1806 wangyurzee的树(容斥原理 + 组合数学)
- 51nod 1806 wangyurzee的树(prufer编码求生成树的个数)
- 51nod 1806 wangyurzee的树
- 51Nod-1806-wangyurzee的树
- 51nod 1806 wangyurzee的树
- bzoj1005[明明的烦恼] purfer编码
- purfer编码解决生成树计数问题
- 【51Nod 1806】wangyurzee
- [BZOJ1005][HNOI2008]明明的烦恼(树的purfer序列+高精度)
- bzoj 1005 明明的烦恼 Purfer Sequence
- 【Purfer】【bzoj 1005】: [HNOI2008]明明的烦恼
- BZOJ 1005: [HNOI2008]明明的烦恼 Purfer数列
- bzoj 1005: [HNOI2008]明明的烦恼 组合数学 + purfer序列
- Purfer Sequence
- Purfer Sequence
- js如何将一个按钮显示或者隐藏
- 【算法读书笔记】第一章 基础
- 常用工具类
- html页面的日历
- svn diff代码使用Beyond Compare
- [容斥+Purfer编码] 51Nod1806 wangyurzee的树
- Markup.h和Markup.cpp Release 11.5
- 为什么你的简历投出去石沉大海?
- 如何让body背景图自适应浏览器窗口大小
- 创建一个sd下面的文件夹作为硬盘缓存的路径和Application应用
- IRedMail卸载升级
- layui 表单页面代码
- UI测试问题
- centos系统下比较工具的比较