给定树每个节点的 degree,问满足条件的树的数目。 \(n\leq 150, ans \leq 10^{17}\)

Solution

注意特判各种坑点

  • \(\sum d_i - 1 = n-2\),否则非法

  • \(d_i = 0\),非法

#include <bits/stdc++.h>
using namespace std; #define int long long
int f[155],n,d[155],isp[155],cnt[155],ans=1; void push(int x) {
for(int i=2;i<=n;i++) if(isp[i]) {
while(x%i==0) x/=i,cnt[i]++;
}
} void pop(int x) {
for(int i=2;i<=n;i++) if(isp[i]) {
while(x%i==0) x/=i,cnt[i]--;
}
} signed main() {
cin>>n;
int sum=0;
for(int i=1;i<=n;i++) cin>>d[i], sum+=d[i]-1;
if(sum!=n-2) {cout<<0; return 0;}
for(int i=1;i<=n;i++) {
int flag=1;
for(int j=2;j<=sqrt(i);j++) {
if(i%j==0) flag=0;
}
if(flag) isp[i]=1;
}
if(n==1) {
if(d[1]==0) cout<<1<<endl;
else cout<<0<<endl;
}
else {
for(int i=1;i<=n;i++) if(d[i]==0) {cout<<0; return 0;}
for(int i=2;i<=n-2;i++) push(i);
for(int i=1;i<=n;i++) for(int j=2;j<=d[i]-1;j++) pop(j);
for(int i=1;i<=n;i++) while(cnt[i]) ans*=i, --cnt[i];
cout<<ans;
}
}

[HNOI2004] 树的计数 - prufer序列的更多相关文章

  1. Luogu P2290 [HNOI2004]树的计数 Prufer序列+组合数

    最近碰了$prufer$ 序列和组合数..于是老师留了一道题:P2624 [HNOI2008]明明的烦恼 qwq要用高精... 于是我们有了弱化版:P2290 [HNOI2004]树的计数(考一样的可 ...

  2. BZOJ 1211 HNOI2004 树的计数 Prufer序列

    题目大意:给定一棵树中全部点的度数,求有多少种可能的树 Prufer序列.详细參考[HNOI2008]明明的烦恼 直接乘会爆long long,所以先把每一个数分解质因数.把质因数的次数相加相减.然后 ...

  3. 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度

    [BZOJ1005][HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可 ...

  4. bzoj1211: [HNOI2004]树的计数 prufer序列裸题

    一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di ...

  5. BZOJ1211: [HNOI2004]树的计数(prufer序列)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2987  Solved: 1111[Submit][Status][Discuss] Descript ...

  6. 树的计数 + prufer序列与Cayley公式(转载)

    原文出处:https://www.cnblogs.com/dirge/p/5503289.html 树的计数 + prufer序列与Cayley公式 学习笔记(转载) 首先是 Martrix67 的博 ...

  7. 树的计数 + prufer序列与Cayley公式 学习笔记

    首先是 Martrix67 的博文:http://www.matrix67.com/blog/archives/682 然后是morejarphone同学的博文:http://blog.csdn.ne ...

  8. bzoj1211: [HNOI2004]树的计数 prufer编码

    题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...

  9. bzoj 1211: [HNOI2004]树的计数 -- purfer序列

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MB Description 一个有n个结点的树,设它的结点分别为v1, v2, ...

随机推荐

  1. 【查阅】Chrome快捷键

    高频简要Chrome快捷键整理 记录一下Chrome常用快捷键方便查询熟悉,提高工作效率. 在我认为比较高频有用的快捷键,会加粗和标记. 在日常中熟练使用快捷键能帮助我们提高工作效率. 一 .F区单键 ...

  2. 【公告】Hello World!

    Hi! 这里 是 华中师大一附中 2019 级信息组 官方博客 ! ^_^ 我们将在这里分享一些难题的做法,帮助大家共同学习. 也欢迎同是OIer的你加入我们哦!

  3. C#实现的Table的Merge,以及实现Table的Copy和Clone

    C#实现的对两个Table进行Merge,两表必须存在至少一个公共栏位作为连接项,否则连接就失去了意义.如下是对两个table进行Merge的详细代码: private void button1_Cl ...

  4. neo4j学习摘要

    参考 链接:https://gitbook.cn/books/5a33782c5778440a9d906017/index.html

  5. Mysql 两种引擎的区别

    MyISAM与InnoDB的区别是什么? 1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 ...

  6. 小白的linux笔记7:批量运行复杂的linux命令组合——BASH简单使用法

    linux的BASH就相当于windows下的BAT文件,可以批处理命令.比如写好一个python脚本后,需要在运行时候加参数,但这个参数又不想每次输入,就可以用BASH的方式写好整条命令,然后直接运 ...

  7. vue实现打印功能

    通过npm 安装插件 1.安装  npm install vue-print-nb --save 2.引入  安装好以后在main.js文件中引入 import Print from 'vue-pri ...

  8. mybatis中用到的9种设计模式

    1.Builder模式:例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBu ...

  9. Spring mvc拦截器防御CSRF攻击

    CSRF(具体参考百度百科) CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSR ...

  10. Tomcat + mysql + myeclipse 启动遇到的问题

    1. 问题: Tomcat启动时报错如下:Table 'performance_schema.session_variables' doesn't exist 2. 网络上普遍找到的解决办法: 控制台 ...