bzoj 1005 HNOI2008 明明的烦恼
这题做的我欲哭无泪啊……
我已经没心情多说啥了……
高精度T啊!我太弱啊!改了一天啊!还不如滚粗啊!
想好式子在写啊!
能用高精度乘单精度就不要用高精度乘高精度啊!
能用高精度除单精度就不要用高精度除高精度啊!
T成翔啊!
简单的组合计数问题啊!
题解在这里=_= : http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html
上代码:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#define N 1100
using namespace std; class bignum
{
public:
int l;
int num[N*];
bignum(int nownum)
{
memset(num, , sizeof(num)); l = ;
if (nownum == ) l = ;
else while (nownum)
{
num[++l] = nownum % ;
nownum /= ;
}
}
void jia(int y);
void chu(int y);
void cheng(int y);
void print();
};
int n, d[N], sum = ; void bignum::jia (int y)
{
num[] += y; int d = num[] / ; int i = ;
while (d)
{
num[++i] = d;
d = num[i] / ;
num[i] %= ;
}
if (i > l) l = i;
} void bignum::cheng (int y)
{
for (int i = ; i <= l; ++i)
num[i] = num[i] * y;
int d = ;
for (int i = ; i <= l; ++i)
{
num[i] += d;
d = num[i] / ;
num[i] %= ;
}
while (d)
{
num[++l] = d;
d = num[l] / ;
num[l] %= ;
}
while (l > && num[l] == ) l--;
} void bignum::chu (int y)
{
int yu = ;
for (int i = l; i >= ; --i)
{
yu = yu* + num[i];
num[i] = yu / y;
yu %= y;
}
while (l > && num[l] == ) l --;
} void bignum::print()
{
int d = ;
for (int i = ; i <= l; ++i)
{
num[i] += d;
d = num[i] / ;
num[i] %= ;
}
while (d) { num[++l] += d; d = num[l] / ; num[l] %= ; }
for (int i = l; i >= ; --i) printf("%d", num[i]);
printf("\n"); return;
} int main()
{
scanf("%d", &n); int fre = ;
for (int i = ; i <= n; ++i)
{
scanf("%d", &d[i]);
if (d[i] != -) { fre++; sum += d[i]-; }
}
if (sum > n-)
{
printf("0\n");
return ;
}
bignum ans = ;
for (int i = n--sum; i <= n-; ++i) ans.cheng(i);
for (int i = ; i <= n-sum-; ++i) ans.cheng(n-fre);
for (int i = ; i <= n; ++i)
if (d[i] > )
for (int j = ; j < d[i]; ++j) ans.chu(j);
ans.print();
return ;
}
bzoj 1005 HNOI2008 明明的烦恼的更多相关文章
- BZOJ 1005 [HNOI2008] 明明的烦恼(组合数学 Purfer Sequence)
题目大意 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为 1 到 N 的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 N( ...
- BZOJ 1005: [HNOI2008]明明的烦恼 Purfer序列 大数
1005: [HNOI2008]明明的烦恼 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2248 Solved: 898[Submit][Statu ...
- BZOJ 1005: [HNOI2008]明明的烦恼( 组合数学 + 高精度 )
首先要知道一种prufer数列的东西...一个prufer数列和一颗树对应..然后树上一个点的度数-1是这个点在prufer数列中出现次数..这样就转成一个排列组合的问题了.算个可重集的排列数和组合数 ...
- BZOJ 1005 [HNOI2008]明明的烦恼 (Prufer编码 + 组合数学 + 高精度)
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5786 Solved: 2263[Submit][Stat ...
- BZOJ 1005 [HNOI2008]明明的烦恼 purfer序列,排列组合
1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少 ...
- bzoj 1005 [HNOI2008] 明明的烦恼 (prufer编码)
[HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5907 Solved: 2305[Submit][Status][Di ...
- BZOJ 1005: [HNOI2008]明明的烦恼(prufer数列)
http://www.lydsy.com/JudgeOnline/problem.php?id=1005 题意: Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标 ...
- BZOJ.1005.[HNOI2008]明明的烦恼(Prufer 高精 排列组合)
题目链接 若点数确定那么ans = (n-2)!/[(d1-1)!(d2-1)!...(dn-1)!] 现在把那些不确定的点一起考虑(假设有m个),它们在Prufer序列中总出现数就是left=n-2 ...
- BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)
题意 N个点,有些点有度数限制,问这些点可以构成几棵不同的树. 思路 [Prufer数列] Prufer数列是无根树的一种数列.在组合数学中,Prufer数列是由一个对于顶点标过号的树转化来的数列,点 ...
随机推荐
- 关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题
因为和同学分开做的android软件,现在想整合他做的界面部分,于是拷贝了res和src文件夹的文件,其中包括一个res.menu文件夹中的XML.但是每次将该文件导入到工程总无法自动在R.java中 ...
- NSRange类详解
NSRange的定义 { NSUInteger location; NSUInteger length; } NSRange; NSRange是一个结构体,其中location是一个以0为开始的ind ...
- SAP BW中的增强(转)
根据所了解的资料,BW中的有关增强可分为五部分,如下: 1. 数据抽取增强,即在标准数据源中加入数据源中所不存在的字段,或者标准数据源不存在所需数据而需要自定义数据源,相关的事务代码有RSO2(用于 ...
- 互联网常见Open API文档资源
原文地址:http://blog.sina.com.cn/s/blog_4d8713560100y272.html 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网 ...
- PYTHON 源码阅读
http://www.wklken.me/posts/2015/09/29/python-source-gc.html http://www.wklken.me/archives.html https ...
- slots - Python的结构体 转
上个月看了篇文章 “SAVING 9 GB OF RAM WITH PYTHON’S __SLOTS__”,原来Python也有类似结构体的东东.拖了一个月才写这篇,是因为太久没看pyth ...
- linux read 用法
1.基本读取 read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后,read命令将数据放入一个标准变量中.下面是 read命令 的最简单形式:: #!/bin/bas ...
- 我的第一款Cocos2d 游戏小狗快跑基本完成
- hdfs: 数据流(二)
大部分的HDFS程序对文件操作需要的是一次写多次读取的操作模式. 一个文件一旦创建.写入.关闭之后就不需要修改了.这个假定简单化了数据一致的问题和并使高吞吐量的数据访问变得可能. 1. 读文件 从上图 ...
- 关于Eclipse的工作空间设置默认个数和配置
&