BZOJ1211树的计数
裸的prufer结论。
给个小链接prufer序列 ,里面有一个性质4就是本题答案,严谨证明可以上网找一找,如果从多组组合角度理解也可以。
剩下的就是特判,n==1时,du==0,1个,du!=0,废了。有du==0,废了。度数和大于(还是不等于来着?)2*(n-1),废了。拿到67分……。
接着就是求那个式子了,我有一套O(n)拆一个阶乘的理论。那这个就是O(n^2)了呗。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#define ll long long
using namespace std;
ll ans=,n,du[],sum,prime[],prime_num;
bool v[];
ll read(){
ll sum=;int f=;char x=getchar();
while(x<''||x>''){
if(x=='-') f=-;
x=getchar();
}while(x>=''&&x<=''){
sum=sum*+x-'';
x=getchar();
}return sum*f;
}
void doprime(int x){
for(int i=;i<=x;i++){
if(!v[i]) prime[++prime_num]=i;
for(int j=;j<=prime_num&&i*prime[j]<=x;j++){
v[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
ll qpow(ll x,ll k){
ll ans=;
for(;k;k>>=,x=x*x)
if(k&) ans=ans*x;
return ans;
}
int main(){
n=read();
if(n==){
du[]=read();
if(!du[]) puts("");
else puts("");
return ;
}
for(int i=;i<=n;i++){
du[i]=read();
if(!du[i]){
puts("");
return ;
}
sum+=du[i];
}
if(sum!=*(n-)){
puts("");
return ;
}
doprime(n);
for(int i=;i<=prime_num;i++){
int s=;
for(int j=n-;j/=prime[i];) s+=j;
for(int j=;j<=n;j++)
for(int k=du[j]-;k/=prime[i];) s-=k;
ans=ans*qpow(prime[i],s);
}printf("%lld",ans);
return ;
}
BZOJ1211树的计数的更多相关文章
- [HNOI2004][bzoj1211] 树的计数(prufer序列)
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3432 Solved: 1295[Submit][Stat ...
- bzoj1211树的计数 x bzoj1005明明的烦恼 题解(Prufer序列)
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3432 Solved: 1295[Submit][Stat ...
- bzoj1211: [HNOI2004]树的计数 prufer编码
题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...
- P2290 [HNOI2004]树的计数(bzoj1211)
洛谷P2290 [HNOI2004]树的计数 bzoj1211 [HNOI2004]树的计数 Description 一个有\(n\)个结点的树,设它的结点分别为\(v_1,v_2,\cdots, v ...
- BZOJ1211: [HNOI2004]树的计数
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1245 Solved: 383[Submit][Statu ...
- prufer BZOJ1211: [HNOI2004]树的计数
以前做过几题..好久过去全忘了. 看来是要记一下... [prufer] n个点的无根树(点都是标号的,distinct)对应一个 长度n-2的数列 所以 n个点的无根树有n^(n-2)种 树 转 p ...
- bzoj1211: [HNOI2004]树的计数(prufer序列+组合数学)
1211: [HNOI2004]树的计数 题目:传送门 题解: 今天刚学prufer序列,先打几道简单题 首先我们知道prufer序列和一颗无根树是一一对应的,那么对于任意一个节点,假设这个节点的度数 ...
- [bzo1211][HNOI2004]树的计数_prufer序列
树的计数 bzoj-1211 HNOI-2004 题目大意:题目链接. 注释:略. 想法: prufer序列有一个性质就是一个数在prufer序列中出现的次数等于这个prufer序列生成的树中它的度数 ...
- 树的计数 + prufer序列与Cayley公式 学习笔记
首先是 Martrix67 的博文:http://www.matrix67.com/blog/archives/682 然后是morejarphone同学的博文:http://blog.csdn.ne ...
随机推荐
- nginx关闭日志功能access_log关闭
网上一堆错误示例,我就不吐槽了,未经验证的各种关闭配置.emmm.... 错误示例: error_log off ; access_log on; 以上这些会产生名字为 off/on 的日志文件... ...
- js数组实现上移下移
up(index) { if(index === 0) { return } //在上一项插入该项 this.list.splice(index - 1, 0, (this.list[index])) ...
- Java 之 Properties类 属性集
一.概述 java.util.Properties集合 extends Hashtable<k,v> implements Map<k,v> java.util.Propert ...
- How to delete SAP* from HANA Tenant database
How to delete SAP* from HANA Tenant database 1.如何登录HANA的多租户(TDC)数据库 使用SAPS4端对应的SAP账户,比如S4D的账户为s4dadm ...
- 转载 AI-Talking 图算法
https://mp.weixin.qq.com/s/2XRgJr-ydxHA3JxAZ_5HeA 图算法在风控业务的实践 直播行业中有很多业务风控问题,比如说批量注册.刷热度.垃圾信息以及薅羊毛等. ...
- enumerateKeysAndObjectsUsingBlock 的用法
block是一个有序列的指令代码块,通常在代码中间花括号括起来的objective-c代码,但是它能被传递和被分配局部变量,然后作为一个参数来传递,基本上可以把花括号中间的代码保存到数据结构里.看起来 ...
- Python中的上下文管理器(contextlib模块)
上下文管理器的任务是:代码块执行前准备,代码块执行后收拾 1 如何使用上下文管理器: 打开一个文件,并写入"hello world" filename="my.txt&q ...
- Linux用ctrl + r 查找以前(历史)输入的命令
在Linux系统下一直用上下键查找以前输入的命令,这个找刚输入不久的命令还是很方便的,但是比较久远的命令,用上下键效率就不高了.那个history命令也是个花架子,虽然功能多,但不好用,网上找了下,发 ...
- python学习之面向对象
目录 __main__,__name__ __module__,__class__ __init__ __del__ __repr__,__str__ __mro__ __call__ __new__ ...
- 混合应用 微信登录授权 微信登录认证失败 ios PGWXAPI错误-1 code:-100 / 安卓 message:invalid appsecret innerCode:40125
最近项目需要做微信登录,于是利用HTML5+ API Reference的OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源.(链接:https://www.dcloud.i ...