[BZOJ1005][HNOI2008]明明的烦恼 数学+prufer序列+高精度
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int N;
int A[],D[],cnt=;
int sum=,q=;
int pri[];
int ans[],len;
int main(){
scanf("%d",&N);
if(N==){
int tmp;
scanf("%d",&tmp);
if(!tmp||tmp==-) puts("");
else puts("");
return ;
}
for(int i=;i<=N;i++){
scanf("%d",&A[i]);
if(!A[i]){
puts("");
return ;
}
if(A[i]!=-){
D[++cnt]=A[i]-;
sum+=D[cnt];
}
else q++;
}
if(N<sum+){
puts("");
return ;
}
for(int i=;i<=cnt;i++)
for(int j=;j<=D[i];j++){
int tmp=j;
for(int k=;k<=j&&tmp!=;k++)
while(tmp%k==){
pri[k]--;
tmp/=k;
}
}
for(int i=N--sum+;i+<=N;i++){
int tmp=i;
for(int j=;j<=i&&tmp!=;j++)
while(tmp%j==){
pri[j]++;
tmp/=j;
}
}
ans[]=;
len=;
for(int i=;i<=N;i++){
while(pri[i]){
for(int j=;j<=len;j++) ans[j]*=i;
for(int j=;j<=len;j++){
ans[j+]+=ans[j]/;
ans[j]%=;
}
while(ans[len+]){
len++;
ans[len+]+=ans[len]/;
ans[len]%=;
}
pri[i]--;
}
}
for(int i=;i++sum<=N;i++){
for(int j=;j<=len;j++) ans[j]*=q;
for(int j=;j<=len;j++){
ans[j+]+=ans[j]/;
ans[j]%=;
}
while(ans[len+]){
len++;
ans[len+]+=ans[len]/;
ans[len]%=;
}
}
for(int i=len;i>=;i--) printf("%d",ans[i]);
return ;
}
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1005
一个prufer序列可以唯一确定一棵生成树。而prufer序列可以确定节点的度数,反过来,通过度数就可以确定prufer序列的方案数。
具体怎么做贴个黄学长的题解接跑吧……
题解:http://hzwer.com/3272.html
[BZOJ1005][HNOI2008]明明的烦恼 数学+prufer序列+高精度的更多相关文章
- 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)
[BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...
- [HNOI2008]明明的烦恼(prufer序列,高精度,质因数分解)
prufer序列 定义 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2. 描述 eg 将 ...
- bzoj1005: [HNOI2008]明明的烦恼(prufer+高精度)
1005: [HNOI2008]明明的烦恼 题目:传送门 题解: 毒瘤题啊天~ 其实思考的过程还是比较简单的... 首先当然还是要了解好prufer序列的基本性质啦 那么和1211大体一致,主要还是利 ...
- 【BZOJ 1005】 1005: [HNOI2008]明明的烦恼 (prufer数列+高精度)
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4981 Solved: 1941 Description ...
- BZOJ1005 HNOI2008明明的烦恼(prufer+高精度)
每个点的度数=prufer序列中的出现次数+1,所以即每次选一些位置放上某个点,答案即一堆组合数相乘.记一下每个因子的贡献分解一下质因数高精度乘起来即可. #include<iostream&g ...
- 【洛谷2624_BZOJ1005】[HNOI2008] 明明的烦恼(Prufer序列_高精度_组合数学)
题目: 洛谷2624 分析: 本文中所有的 "树" 都是带标号的. 介绍一种把树变成一个序列的工具:Prufer 序列. 对于一棵 \(n\) 个结点的树,每次选出一个叶子(度数为 ...
- BZOJ1005:[HNOI2008]明明的烦恼(组合数学,Prufer)
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N ...
- 2021.07.19 P2624 明明的烦恼(prufer序列,为什么杨辉三角我没搞出来?)
2021.07.19 P2624 明明的烦恼(prufer序列,为什么杨辉三角我没搞出来?) [P2624 HNOI2008]明明的烦恼 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn ...
- [HNOI2008][bzoj 1005]明明的烦恼(prufer序列)
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7121 Solved: 2816[Submit][Stat ...
随机推荐
- android WIFI信息获取
在androi中WIFI信息的获取能够通过系统提供的WIFI Service获取 [java] WifiManager wifi_service = (WifiManager)getSystemSe ...
- vsCode 常用快捷键(mac 版)
光标多行显示: commond+Alt+topArrow/downArrow 查找:commond+F 查找并按顺序切换下一个:commond+G 跳转到某一行: ctrl+G 输入行号跳转 跳转到某 ...
- 浅谈JavaScript的面向对象程序设计(三)
前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性.对象的工厂模式.构造函数和原型等.通过介绍,这些创建对象的方法依然有不少优化和改进的地方. 组合使用构造函数模式和原型 ...
- Flask采用Virtualenv+Supervisor+Nginx部署应用
Flask采用Virtualenv+Supervisor+Nginx部署应用 -- 首先是概念解释 WSGI服务器,负责我们的app与服务器的交互,常用的有Gunicorn Web服务器,是个HTTP ...
- UPDATE command denied DELETE
可用磁盘空间不足 支持SELECT information_schema. TABLES
- 显示 目录 大小 du
[root@hadoop1 /]# du -BG -d 11G ./boot0G ./dev63G ./homedu: 无法访问"./proc/6689/task/6689/fd/4&qu ...
- mysql workbench快捷键
注释/取消注释, ctrl+/ 暂时不知道怎么设置(原配置是 ctrl+divide)格式化sql语句(美化sql语句), ctrl+b
- mysql16---读写分离
读写分离(负载平衡)(读写分离肯定要用到主从复制) 如果数据库压力很大,一台机器支撑不了,那么可以用mysql复制实现多台机器同步,将数据库的压力分散. 分表不能解决并发量大的问题. Sql语句发过来 ...
- bzoj3330: [BeiJing2013]分数
口胡 题目hint都给你是一个三分函数了 还不会上三分套三分吗 exp函数又卡 精度又卡 什么sb毒瘤题 浪费时间
- eclipse自动创建项目出错Cannot change version of project facet Dynamic Web Module to 2.3.
Cannot change version of project facet Dynamic Web Module to 2.3. step1:修改properties step2:修改web.xml ...