【BZOJ 1005】【HNOI 2008】明明的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1005
答案是$$\frac{(n-2)!}{(n-2-sum)!×\prod_{i=1}{cnt}(d[i]-1)!}×(n-cnt){n-2-sum}$$
\]
用到了prufer编码,参考http://www.cnblogs.com/zhj5chengfeng/p/3278557.html
注意要写高精度!
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 1003;
bool notp[N];
int cnt = 0, n, d[N], num = 0, prime[N], sum = 0, tot[N];
void shai() {
for (int i = 2; i <= n; ++i) {
if (!notp[i]) prime[++num] = i;
for (int j = 1; j <= num && i * prime[j] <= n; ++j) {
notp[i * prime[j]] = true;
if (i % prime[j] == 0)
break;
}
}
}
void add(int x, int flag) {
for (int i = 1; i <= num && x != 1; ++i)
if (x % prime[i] == 0)
while (x % prime[i] == 0) {
tot[i] += flag;
x /= prime[i];
}
}
ll ipow(int x, int b) {
ll w = x, r = 1;
while (b) {
if (b & 1) r *= w;
w = w * w;
b >>= 1;
}
return r;
}
struct Big {
int a[10003], len;
Big() {memset(a, 0, sizeof(a)); len = 0;}
Big operator * (const int &b) const {
Big C;
for (int i = 1; i <= len; ++i) {
C.a[i] += a[i] * b;
C.a[i + 1] += C.a[i] / 10;
C.a[i] %= 10;
}
C.len = len;
while (C.a[C.len + 1] != 0) {
++C.len;
C.a[C.len + 1] = C.a[C.len] / 10;
C.a[C.len] %= 10;
}
return C;
}
};
int main() {
scanf("%d", &n);
int dd;
for (int i = 1; i <= n; ++i) {
scanf("%d", &dd);
if (dd != -1)
d[++cnt] = dd, sum += dd - 1;
}
shai();
if (n == 1) {
puts(dd > 0 ? "0" : "1");
return 0;
}
if (sum > n - 2) {
puts("0");
return 0;
}
int down = n - 2 - sum;
for (int i = n - 2; i > down; --i) add(i, 1);
for (int i = 1; i <= cnt; ++i)
for (int j = d[i] - 1; j > 1; --j)
add(j, -1);
add(n - cnt, down);
Big ans; ans.len = 1; ans.a[1] = 1;
for (int i = 1; i <= num; ++i)
for (int j = tot[i]; j >= 1; --j)
ans = ans * prime[i];
for (int i = ans.len; i >= 1; --i)
putchar('0' + ans.a[i]);
puts("");
return 0;
}
【BZOJ 1005】【HNOI 2008】明明的烦恼的更多相关文章
- [bzoj 1005][HNOI 2008]明明的烦恼(prufer数列+排列组合)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 分析: 首先prufer数列:http://baike.baidu.com/view/1 ...
- 【BZOJ 1005】[HNOI2008]明明的烦恼
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...
- [BZOJ1005](HNOI 2008)明明的烦恼
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...
- 【BZOJ 1005】[HNOI2008]明明的烦恼(暴力化简法)
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 [题意] 中文题 [题解] 一棵节点上标有序号的树会和一个prufer数列唯一对 ...
- 【BZOJ 1005】[HNOI2008]明明的烦恼(化简的另一种方法)
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 [题意] [题解] 题目和题解在上一篇; 这里 对 [(m^(n-2-tot)) ...
- [bzoj 1004][HNOI 2008]Cards(Burnside引理+DP)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1004 分析: 1.确定方向:肯定是组合数学问题,不是Polya就是Burnside,然后题目上 ...
- BZOJ 1009 HNOI 2008 GT考试 递推+矩乘
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3679 Solved: 2254[Submit][Statu ...
- BZOJ 1007 HNOI 2008 水平可见直线 计算几何+栈
题目大意:给出一些笛卡尔系中的一些直线,问从(0,+∞)向下看时能看到哪些直线. 思路:半平面交可做,可是显然用不上. 类似于求凸包的思想,维护一个栈. 先将全部直线依照k值排序.然后挨个压进去,遇到 ...
- [bzoj 1010][HNOI 2008]玩具装箱
传送门 Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号 ...
- BZOJ 1005 [HNOI2008] 明明的烦恼(组合数学 Purfer Sequence)
题目大意 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为 1 到 N 的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 N( ...
随机推荐
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- MVC 传值
1.ViewBag Controller:ViewBag.Message = "Hello, Word"; View:@ViewBag.Message 注:View ...
- 遍历map的四种方法
方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用.注意:for-each循环在Java 5中被引入所以该方法只能应用于j ...
- 《HTML5》 Audio/Video全解
一.标签解读 <audio> 标签属性 <audio id="media" src="http://www.abc.com/test.mp3" ...
- 前端css框架SASS使用教程(转)
一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常的一 ...
- AEAI ESB培训大纲
1. 概述 本文档的目的是为了让使用者能更好的操作.维护.服务于整个ESB系统平台,该信息系统平台不仅需要成熟稳定的产品,更需要技术熟练的运行维护人员,以便能更好地进行科学有效的运行维护工作. AEA ...
- TextField和TextView的限制输入长度
TextField的限制代理方法 只需要在这个代理方法里面code这样的代码就可以了 16 是长度可以自己设置 - (BOOL)textField:(UITextField *)textField s ...
- Android开发案例 - 淘宝商品详情
所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等其他信息放在下页展示 知识要点 垂直方向的ViewPa ...
- swift-可选值
swift的nil和OC有些不一样,OC只有对象可以用nil,swift基础类型(整形,浮点)没有值时也是nil,当初始化的时候,swift可以没有初始值的,产生了可选值Optional. 定义可选值 ...
- MVC 5 中Filter控制 action的访问权限
1,创建一个继承自 FilterAttribute, IActionFilter的类 namespace HeatMetering2.Filters { public class HMV2Authen ...