【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)

题面

BZOJ

洛谷

题解

戳这里

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<algorithm>
  7. #include<vector>
  8. using namespace std;
  9. #define ll long long
  10. #define MAX 1010
  11. inline int read()
  12. {
  13. int x=0;bool t=false;char ch=getchar();
  14. while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
  15. if(ch=='-')t=true,ch=getchar();
  16. while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
  17. return t?-x:x;
  18. }
  19. const int yw=10000;
  20. struct BigNum
  21. {
  22. ll s[MAX*2];int ws;
  23. void output()
  24. {
  25. printf("%lld",s[ws]);
  26. for(int i=ws-1;i;--i)
  27. printf("%04lld",s[i]);
  28. puts("");
  29. }
  30. void clear(){memset(s,0,sizeof(s));ws=0;}
  31. }ans;
  32. BigNum operator*(BigNum a,int b)
  33. {
  34. int ws=a.ws;BigNum ret;ret.clear();
  35. for(int i=1;i<=ws;++i)ret.s[i]=a.s[i]*b;
  36. for(int i=1;i<=ws;++i)ret.s[i+1]+=ret.s[i]/yw,ret.s[i]%=yw;
  37. while(ret.s[ws+1])++ws,ret.s[ws+1]+=ret.s[ws]/yw,ret.s[ws]%=yw;
  38. ret.ws=ws;return ret;
  39. }
  40. int sum,a[MAX],cnt,n;
  41. int p1[MAX],p2[MAX];
  42. void add(int *p,int x)
  43. {
  44. for(int i=2;i*i<=x;++i)
  45. while(x%i==0)x/=i,++p[i];
  46. if(x>1)++p[x];
  47. }
  48. int main()
  49. {
  50. n=read();
  51. for(int i=1;i<=n;++i)
  52. {
  53. a[i]=read();if(a[i]==-1)continue;
  54. ++cnt;sum+=a[i]-1;
  55. }
  56. if(sum+n>2*(n-1)){puts("0");return 0;}
  57. for(int i=n-2;i;--i)add(p1,i);
  58. for(int i=n-2-sum;i;--i)add(p2,i);
  59. for(int i=1;i<=n;++i)
  60. if(a[i]!=-1)
  61. for(int j=1;j<a[i];++j)
  62. add(p2,j);
  63. for(int i=1;i<=n-2-sum;++i)add(p1,n-cnt);
  64. for(int i=1;i<=n;++i)p1[i]-=p2[i];
  65. ans.s[1]=1;ans.ws=1;
  66. for(int i=1;i<=n;++i)
  67. for(int j=1;j<=p1[i];++j)
  68. ans=ans*i;
  69. ans.output();
  70. return 0;
  71. }

【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)的更多相关文章

  1. bzoj1005: [HNOI2008]明明的烦恼 prufer序列

    https://www.lydsy.com/JudgeOnline/problem.php?id=1005 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的 ...

  2. 【bzoj1005】[HNOI2008]明明的烦恼 Prufer序列+高精度

    题目描述 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? 输入 第一行为N(0 < N < = 1000),接下来N行,第i+1行给出第i ...

  3. [BZOJ1005] [HNOI2008] 明明的烦恼 (prufer编码)

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N ...

  4. [bzoj1005][HNOI2008]明明的烦恼-Prufer编码+高精度

    Brief Description 给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Algorithm Design 结论题. 首先可以参考这篇文章 ...

  5. bzoj1005: [HNOI2008]明明的烦恼(prufer+高精度)

    1005: [HNOI2008]明明的烦恼 题目:传送门 题解: 毒瘤题啊天~ 其实思考的过程还是比较简单的... 首先当然还是要了解好prufer序列的基本性质啦 那么和1211大体一致,主要还是利 ...

  6. bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2248  Solved: 898[Submit][Statu ...

  7. BZOJ 1005 [HNOI2008]明明的烦恼 (Prufer编码 + 组合数学 + 高精度)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5786  Solved: 2263[Submit][Stat ...

  8. BZOJ 1005: [HNOI2008]明明的烦恼 Purfer序列 大数

    1005: [HNOI2008]明明的烦恼 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  9. bzoj 1005 [HNOI2008] 明明的烦恼 (prufer编码)

    [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5907  Solved: 2305[Submit][Status][Di ...

  10. bzoj1005 [HNOI2008]明明的烦恼

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3032  Solved: 1209 Description ...

随机推荐

  1. 【css】文本超出行数以省略号显示

    //超出2行省略overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webk ...

  2. 9.Libraries and visibility 库和可见性

    import和liabrary指令可以帮助你创建模块化,可复用的代码.库不仅仅提供API,也是一个私有化单元:库中已下划线(_)开头的类都是对外不可访问的.每个Dart的应用也是一个包,尽管它没有使用 ...

  3. 20155337 《网络对抗》 Exp2 后门原理与实践

    20155337 <网络对抗> Exp2 后门原理与实践 一.基础问题回答 - 例举你能想到的一个后门进入到你系统中的可能方式? 在Unix里,login程序通常用来对telnet来的用户 ...

  4. 外部事件/中断的区别及EXTI->SWIER的用途

    EXTI_SWIER作用:允许我们通过程序控制就可以启动中断/事件线 1.产生事件的线路最终的产物是一个脉冲信号,这个脉冲信号可以给其他外设电路使用,比如定时器TIM.模拟数字转换器ADC等等. 2. ...

  5. Kubernetes学习之路(二十)之K8S组件运行原理详解总结

    目录 一.看图说K8S 二.K8S的概念和术语 三.K8S集群组件 1.Master组件 2.Node组件 3.核心附件 四.K8S的网络模型 五.Kubernetes的核心对象详解 1.Pod资源对 ...

  6. 显示 隐藏DIV的技巧

    使用bootstrap的12分栅来演示 style="display: none;" 隐藏后释放占用的页面空间 document.getElementById("type ...

  7. 设计模式 笔记 代理模式 Proxy

    //---------------------------15/04/21---------------------------- //Proxy 代理模式-----对象结构型模式 /* 1:意图: ...

  8. .NET Core容器化开发系列(一)——Docker里面跑个.NET Core

    前言 博客园中已经有很多如何在Docker里面运行ASP.NET Core的介绍了.本篇主要介绍一些细节,帮助初学的朋友更加深入地理解如何在Docker中运行ASP.NET Core. 安装Docke ...

  9. 外网主机访问虚拟机下的web服务器(NAT端口转发)-----端口映射

    主机:系统win7,ip地址172.18.186.210 虚拟机:VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP ...

  10. linux/Centos下查看和修改网卡Mac地址(ifconfig命令)

    本文转载自http://www.169it.com/article/14360294838474691537.html linux/Centos下查看网卡Mac地址,输入命令: #ifconfig - ...