[HNOI2004] 树的计数 - prufer序列
给定树每个节点的 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序列的更多相关文章
- Luogu P2290 [HNOI2004]树的计数 Prufer序列+组合数
最近碰了$prufer$ 序列和组合数..于是老师留了一道题:P2624 [HNOI2008]明明的烦恼 qwq要用高精... 于是我们有了弱化版:P2290 [HNOI2004]树的计数(考一样的可 ...
- BZOJ 1211 HNOI2004 树的计数 Prufer序列
题目大意:给定一棵树中全部点的度数,求有多少种可能的树 Prufer序列.详细參考[HNOI2008]明明的烦恼 直接乘会爆long long,所以先把每一个数分解质因数.把质因数的次数相加相减.然后 ...
- 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度
[BZOJ1005][HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可 ...
- bzoj1211: [HNOI2004]树的计数 prufer序列裸题
一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di ...
- BZOJ1211: [HNOI2004]树的计数(prufer序列)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2987 Solved: 1111[Submit][Status][Discuss] Descript ...
- 树的计数 + prufer序列与Cayley公式(转载)
原文出处:https://www.cnblogs.com/dirge/p/5503289.html 树的计数 + prufer序列与Cayley公式 学习笔记(转载) 首先是 Martrix67 的博 ...
- 树的计数 + prufer序列与Cayley公式 学习笔记
首先是 Martrix67 的博文:http://www.matrix67.com/blog/archives/682 然后是morejarphone同学的博文:http://blog.csdn.ne ...
- bzoj1211: [HNOI2004]树的计数 prufer编码
题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...
- bzoj 1211: [HNOI2004]树的计数 -- purfer序列
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MB Description 一个有n个结点的树,设它的结点分别为v1, v2, ...
随机推荐
- C++中的public、protected和private
访问权限控制 一个类的public的成员变量.成员函数,可以通过类的实例变量进行访问. 一个类的protected的成员变量.成员函数,无法通过类的实例变量进行访问,但是可以通过类的友元函数.友元类进 ...
- Android Studio 学习笔记(四):Adapter和RecyclerView说明
在现版本中,滚动控件有多种,而相比于ListView,GridView,RecyclerView的用途更广,因此将前两者作为Adapter适配器的引入,再对RecyclerView进行简单讲解. MV ...
- ES6 - 报错整理(1): Unexpected end of JSON input while parsing near '...es":"7.0.0-alpha.11",'
npm install --save-dev 安装 babel-preset-env时一直报错 Unexpected end of JSON input while parsing near '... ...
- SDI011 读卡器发送非APDU指令
1 使用FFFE 发送Raw data 例如: 想要发送raw data :5140 FFFE0000025140 实际收到的是: 0B0051403E1E , (0B:PCB , 00:CID, 3 ...
- POJ-2299 Ultra-QuickSort(用树状数组求逆序对数)
题目链接 ac代码 #include<iostream> #include<cstdio> #include<cstring> #include<algori ...
- 广度优先搜索BFS---求出矩阵中“块”的个数
题目: 给出一个 m x n 的矩阵,矩阵中的元素为0或1.如果矩阵中有若干个 1是相邻的,那么称这些1构成了一个“块”.求给定的矩阵中“块”的个数. 0 1 1 1 0 0 1 0 0 1 0 0 ...
- P1832题解 A+B Problem(再升级)
万能的打表 既然说到素数,必须先打素数表筛出素数, 每个素数可以无限取,这就是完全背包了. 这次打个质数表: bool b[1001]={1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,1 ...
- django-分页(非海量数据)
views.py class AnalysisDataHandler(View): def get(self, request): analysis_data = MonitorCenterDataA ...
- mysql第八课
开启事务: START TRANSACTION; 提交事务: COMMIT; 回滚事务: ROLLBACK; 事务的概念:原子性,一致性,隔离性,持久性 READ UNCOMMITTED(读了未提交) ...
- Vue中vue-i18n结合vant-ui实现国际化
(一)添加依赖模块 在package.json文件中添加vant模块的依赖,如: // package.json { "dependencies": { "vant&qu ...