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}$$

\[sum=\sum_{i=1}^{cnt}(d[i]-1)
\]

用到了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】明明的烦恼的更多相关文章

  1. [bzoj 1005][HNOI 2008]明明的烦恼(prufer数列+排列组合)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 分析: 首先prufer数列:http://baike.baidu.com/view/1 ...

  2. 【BZOJ 1005】[HNOI2008]明明的烦恼

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...

  3. [BZOJ1005](HNOI 2008)明明的烦恼

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 ...

  4. 【BZOJ 1005】[HNOI2008]明明的烦恼(暴力化简法)

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 [题意] 中文题 [题解] 一棵节点上标有序号的树会和一个prufer数列唯一对 ...

  5. 【BZOJ 1005】[HNOI2008]明明的烦恼(化简的另一种方法)

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1005 [题意] [题解] 题目和题解在上一篇; 这里 对 [(m^(n-2-tot)) ...

  6. [bzoj 1004][HNOI 2008]Cards(Burnside引理+DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1004 分析: 1.确定方向:肯定是组合数学问题,不是Polya就是Burnside,然后题目上 ...

  7. BZOJ 1009 HNOI 2008 GT考试 递推+矩乘

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3679  Solved: 2254[Submit][Statu ...

  8. BZOJ 1007 HNOI 2008 水平可见直线 计算几何+栈

    题目大意:给出一些笛卡尔系中的一些直线,问从(0,+∞)向下看时能看到哪些直线. 思路:半平面交可做,可是显然用不上. 类似于求凸包的思想,维护一个栈. 先将全部直线依照k值排序.然后挨个压进去,遇到 ...

  9. [bzoj 1010][HNOI 2008]玩具装箱

    传送门 Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号 ...

  10. BZOJ 1005 [HNOI2008] 明明的烦恼(组合数学 Purfer Sequence)

    题目大意 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为 1 到 N 的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 N( ...

随机推荐

  1. python 数据类型---列表使用 之一

    列表的表现形式:其中的元素可以使任何数据类型,像 字符串,数字, 字典, 列表,变量 等任何类型 age = 28 name = ["Frank", "Lee" ...

  2. java面试题——集合框架

    先来看一下集合框架关系图 Collection FrameWork 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └S ...

  3. 《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》

    前记:本来原生的JS是有提供一个函数来实现这个功能(window.clipboardData),但是很遗憾,这个函数仅仅支持IE和FF浏览器,所以基本用处不大.下边介绍的是一个第三方插件库(ZeroC ...

  4. Angel工作室EasyUI通用权限管理框架正式发布

    框架系统基本功能: 1.管理员管理 2.日志管理 3.菜单导航管理 4.角色管理 5.操作权限管理 6.系统设置管理 7.报表导出 8.系统参数管理  该框架应该说是码农们接单利器的首选解决方案,本框 ...

  5. arcgis api for js入门开发系列二不同地图服务展示(含源代码)

    上一篇介绍了arcgis api离线部署,这篇开始正式介绍arcgis api for js开发:想要学习webgis开发,首先得熟悉了解前端技术,比如界面布局设计的html+css,核心的是java ...

  6. 【代码笔记】iOS-旋转的风扇

    一,效果图. 二,工程图. 三,代码. AppDelegate.m #import "AppDelegate.h" //加入头文件 #import "RoundDiskV ...

  7. django 第三天 有关pip使用

    软件应用开发的经典模型有这样几个环境:开发环境(development).集成环境(integration).测试环境(testing).QA验证,模拟环境(staging).生产环境(product ...

  8. mac,/usr/local is not writable 解决方法

    mac,/usr/local is not writable 解决方法 mac 问题 今天在mac上装mongodb,发现提示权限不足问题,错误提示如下: mac安装mongodb错误提示.jpg 尝 ...

  9. nginx在linux下安装

    安装前先确认是否已经安装编译包和一些依赖包如果没有安装: yum install pcre* yum install openssl* yum install zlib yum install zli ...

  10. 今天搞了一天的CentOS,唉,实在感觉自己渺小啊

    从别人处转载一篇文章:http://my.oschina.net/idiotsky/blog/303545 这个文章讲的很好,因为告诉了我怎么去查看ftp有关的SElinux的bool变量值以及设定. ...