[HNOI2008]明明的烦恼
2017-05-27 21:05
351 查看
1005: [HNOI2008]明明的烦恼
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5090 Solved: 1986
[Submit][Status][Discuss]
Description
自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树?
Input
第一行为N(0 < N < = 1000),接下来N行,第i+1行给出第i个节点的度数Di,如果对度数不要求,则输入-1
Output
一个整数,表示不同的满足要求的树的个数,无解输出0Sample Input
31
-1
-1
Sample Output
2HINT
两棵树分别为1-2-3;1-3-2prufer序列+压位高精+组合数
黄学长无可挑剔题解 http://hzwer.com/3272.html
吓得我都不敢写了(其实是懒)
#include<cstdio> #define N 1001 #define mod 1000000 using namespace std; int a ,tot,m,n; int prime ,sum ,cnt,ans ; bool v ; void pre_prime() { for(int i=2;i<N;i++) { if(!v[i]) prime[++cnt]=i; for(int j=1;j<=cnt;j++) { if(prime[j]*i>N-1) break; v[prime[j]*i]=true; if(i%prime[j]==0) break; } } } void apart(int k,int w) { int tmp=k; for(int j=1;j<=cnt;j++) { k=tmp; while(k) { sum[j]+=w*k/prime[j]; k/=prime[j]; } } } void mul(int x) { for(int i=1;i<=ans[0];i++) ans[i]*=x; for(int i=1;i<=ans[0];i++) { ans[i+1]+=ans[i]/mod; ans[i]%=mod; } while(ans[ans[0]+1]) { ans[0]++; ans[ans[0]+1]=ans[0]/mod; ans[0]%=mod; } } void out() { printf("%d",ans[ans[0]]); for(int i=ans[0]-1;i;i--) printf("%06d",ans[i]); } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i]==-1) m++; else tot+=--a[i]; } if(tot>n-2) { printf("0"); return 0; } pre_prime(); apart(n-2,1); apart(n-2-tot,-1); for(int i=1;i<=n;i++) if(a[i]) apart(a[i],-1); //for(int i=1;i<=cnt;i++) printf("%d\n",sum[i]); ans[0]=ans[1]=1; for(int i=1;i<=cnt;i++) for(int j=1;j<=sum[i];j++) mul(prime[i]); for(int i=1;i<=n-2-tot;i++) mul(m); out(); }
相关文章推荐
- bzoj 1005: [HNOI2008]明明的烦恼
- [bzoj1005][HNOI2008]明明的烦恼
- BZOJ 1005: [HNOI2008]明明的烦恼 Purfer数列
- BZOJ1005 - [HNOI2008]明明的烦恼
- HNOI2008明明的烦恼
- 【bzoj1005】 HNOI2008—明明的烦恼
- 【BZOJ 1005】[HNOI2008]明明的烦恼 【Prufer序列】
- bzoj 1005: [HNOI2008]明明的烦恼
- 【Prufer编码+组合】BZOJ1005(HNOI2008)[明明的烦恼]题解
- [BZOJ1005]HNOI2008 明明的烦恼|prufer编码|排列组合
- bzoj1005 [HNOI2008]明明的烦恼
- BZOJ 1005 [HNOI2008]明明的烦恼
- [BZOJ]1005 明明的烦恼(HNOI2008)
- [HNOI2008]明明的烦恼
- BZOJ P1005:[HNOI2008]明明的烦恼
- bzoj 1005: [HNOI2008]明明的烦恼
- bzoj 1005: [HNOI2008]明明的烦恼(prufer数列)
- [bzoj 1005][HNOI 2008]明明的烦恼(prufer数列+排列组合)
- bzoj 1005: [HNOI2008]明明的烦恼 prufer编码+高精度
- 【bzoj1005】[HNOI2008]明明的烦恼