BZOJ 1211[HNOI2004]树的计数 - prufer数列
描述
一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。
题解
每颗树都对应以中prufer数列, prufer数列中数出现的个数 $=$ 节点的度数 -1
所以变成了求再prufer数列中, $x$出现次数为$c_x$ 的排列数
答案为$!(N - 2) / \prod\limits_{i = 1}^N{a_i-1}$
直接算会爆LL, 需要分解质因数
另外还需要特判
代码
我发现打了个错误程序,由于某B姓OJ数据太水竟然过了。。。这个是错误的→_→,幸好发现了, 不然要出锅QAQ
#include<cstdio>
#include<algorithm>
#define ll long long
#define rd read()
using namespace std; const int N = ; int pri[N], tot, vis[N], n, cnt[N], sum;
ll ans = ; ll fpow(ll a, ll p) {
ll re = ;
for(; p; p >>= , a = a * a) if(p & ) re = re * a;
return re;
} int read() {
int X = , p = ; char c = getchar();
for(; c > '' || c < ''; c = getchar()) if(c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} void init() {
for(int i = ; i < N; ++i) {
if(!vis[i]) pri[++tot] = i;
for(int j = ; j <= tot && pri[j] * i < N; ++j) {
vis[i * pri[j]] = ;
if(i % pri[j] == ) break;
}
}
} void cal(int x, int k) {
if(!x || x == ) return;
for(int i = ; i <= tot && x != ; ++i) if(x % pri[i] == ) {
while(x % pri[i] == ) cnt[i] += k, x /= pri[i];
}
} int main()
{
init();
n = rd;
for(int i = ; i <= n - ; ++i) cal(i, );
for(int i = ; i <= n; ++i) {
int x = rd;
if(n != && !x) return printf("0\n"), ;
if(n == && x) return printf("0\n"), ;
if(n == && !x) return printf("1\n"), ;
for(int j = ; j < x; ++j) cal(j, -);
sum += x - ;
}
if(sum != n - ) return printf("0\n"), ;
for(int i = ; i <= tot; ++i) ans *= fpow(pri[i], cnt[i]);
printf("%lld\n", ans);
}
BZOJ 1211[HNOI2004]树的计数 - prufer数列的更多相关文章
- BZOJ 1211 HNOI2004 树的计数 Prufer序列
题目大意:给定一棵树中全部点的度数,求有多少种可能的树 Prufer序列.详细參考[HNOI2008]明明的烦恼 直接乘会爆long long,所以先把每一个数分解质因数.把质因数的次数相加相减.然后 ...
- bzoj 1211: [HNOI2004]树的计数 -- purfer序列
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MB Description 一个有n个结点的树,设它的结点分别为v1, v2, ...
- BZOJ 1211: [HNOI2004]树的计数( 组合数学 )
知道prufer序列就能写...就是求个可重集的排列...先判掉奇怪的情况, 然后答案是(N-2)!/π(d[i]-1)! -------------------------------------- ...
- [HNOI2004]树的计数 prufer数列
题面: 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,你的程序需要输出满足d( ...
- 【刷题】BZOJ 1211 [HNOI2004]树的计数
Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, -, dn,编程需要 ...
- bzoj 1211: [HNOI2004]树的计数
prufer的应用.. 详细见这篇博客:https://www.cnblogs.com/dirge/p/5503289.html import java.math.BigInteger; import ...
- 【BZOJ 1211】 1211: [HNOI2004]树的计数 (prufer序列、计数)
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2468 Solved: 868 Description 一 ...
- bzoj1211: [HNOI2004]树的计数 prufer编码
题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...
- Luogu P2290 [HNOI2004]树的计数 Prufer序列+组合数
最近碰了$prufer$ 序列和组合数..于是老师留了一道题:P2624 [HNOI2008]明明的烦恼 qwq要用高精... 于是我们有了弱化版:P2290 [HNOI2004]树的计数(考一样的可 ...
随机推荐
- 基于Linux的Samba开源共享解决方案测试(三)
在极限写场景下,对于网关的网络监控如图: 在极限写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于客户端的网络监控如图: 双NAS网关100 ...
- myeclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
任何软件快捷键失效99%的原因是跟其他软件的快捷键冲突了,经过检查,是跟搜狗输入法的简繁体切换快捷键Ctrl+Shift+F 冲突了,打开搜狗工具箱中的属性设置: 在属性设置中找到“按键”,将简繁体快 ...
- 配置IIS,以在局域网内访问发布的web站点
在windows 7或win8 中 配置IIS, 以在局域网内访问自己发布的web 网站或应用程序.主要配置步骤如下: 1. 打开 win7 或 win8 控制面板,选择: 打开或关闭windws 功 ...
- 12.mysql高级查询
1. mysql 支持三种类型的连接查询: on 后面跟的是关联条件 内连接查询 select s.name,c.name from students as s inner join classes ...
- OpenACC 绘制曼德勃罗集
▶ 书上第四章,用一系列步骤优化曼德勃罗集的计算过程. ● 代码 // constants.h ; ; ; ; const double xmin=-1.7; ; const double ymin= ...
- Oracle JOB简例
JOB declare jobno number; begin dbms_job.submit( jobno, 'insert into tmptable1 values(1,1);', to_dat ...
- JSON.Stringify()和JSON.parse()的比较使用
1. JSON.Stringify() 将一个对象解析成字符串 <script> function myonclick() { var value = $('select option: ...
- 基于OpenGL编写一个简易的2D渲染框架-10 重构渲染器-Pass
Pass,渲染通路,一个渲染通路指的是一次像素处理和一次顶点处理,也就是指的是一次绘制.简单来说就是顶点数据在渲染管线中走一遍最后绘制. 渲染粒子系统的粒子时,需要开启 OpenGL 的混合模式,并使 ...
- HTTP状态码 解析
原文地址:HTTP状态码:400500错误代码(个人总结)作者:lining2008net 一些常见的状态码为: 200-服务器成功返回网页 404-请求的网页不存在 503-服务不可用 详细分解: ...
- mysql之MMM高可用方案简介
MMM(Master-Master Replication Manager for MySQL) MySQL主主复制管理器,提供了MySQL主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件.在 ...