这题做的我欲哭无泪啊……

我已经没心情多说啥了……

高精度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 明明的烦恼的更多相关文章

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

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

  2. BZOJ 1005: [HNOI2008]明明的烦恼 Purfer序列 大数

    1005: [HNOI2008]明明的烦恼 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  3. bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2248  Solved: 898[Submit][Statu ...

  4. BZOJ 1005: [HNOI2008]明明的烦恼( 组合数学 + 高精度 )

    首先要知道一种prufer数列的东西...一个prufer数列和一颗树对应..然后树上一个点的度数-1是这个点在prufer数列中出现次数..这样就转成一个排列组合的问题了.算个可重集的排列数和组合数 ...

  5. BZOJ 1005 [HNOI2008]明明的烦恼 (Prufer编码 + 组合数学 + 高精度)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5786  Solved: 2263[Submit][Stat ...

  6. BZOJ 1005 [HNOI2008]明明的烦恼 purfer序列,排列组合

    1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少 ...

  7. bzoj 1005 [HNOI2008] 明明的烦恼 (prufer编码)

    [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5907  Solved: 2305[Submit][Status][Di ...

  8. BZOJ 1005: [HNOI2008]明明的烦恼(prufer数列)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1005 题意: Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标 ...

  9. BZOJ.1005.[HNOI2008]明明的烦恼(Prufer 高精 排列组合)

    题目链接 若点数确定那么ans = (n-2)!/[(d1-1)!(d2-1)!...(dn-1)!] 现在把那些不确定的点一起考虑(假设有m个),它们在Prufer序列中总出现数就是left=n-2 ...

  10. BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)

    题意 N个点,有些点有度数限制,问这些点可以构成几棵不同的树. 思路 [Prufer数列] Prufer数列是无根树的一种数列.在组合数学中,Prufer数列是由一个对于顶点标过号的树转化来的数列,点 ...

随机推荐

  1. 【转】Dancing Links精确覆盖问题

    原文链接:http://sqybi.com/works/dlxcn/ (只转载过来一部分,全文请看原文,感觉讲得很好~)正文    精确覆盖问题    解决精确覆盖问题    舞蹈步骤    效率分析 ...

  2. [Angular 2] *ngFor

    heros.ts: import {Component} from "@angular/core"; const HEROES = [ {id: 1, name:'Superman ...

  3. iOS开发——动画篇Swift篇&炫酷弹出菜单

    炫酷弹出菜单   这个是一个第三方按钮菜单组件,原版是使用Objective-C编写的名为AwesomeMenu的组件,地址是:https://github.com/levey/AwesomeMenu ...

  4. wkhtmltopdf 将网页生成pdf文件

    先安装依赖 yum install fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype l ...

  5. C++之运算符重载(2)

    上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题.++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又 ...

  6. Ruby on Rails Tutorial 第一章 之 Heroku部署

    1.目的:用Heroku将开发环境部署到生产环境中.Heroku专门用于部署Rails和其他Web应用,部署Rails应用的过程非常简单——只要源码纳入Git版本控制系统就好. 2.搭建Heroku部 ...

  7. java_ExecutorService, CompletionService - 有返回值并行工作方式

    package com.demo.test3; import java.util.ArrayList; import java.util.List; import java.util.Random; ...

  8. Linux 学习笔记 cp 和 ln

    最近在重温大学的经典课程:Linux.每天工作之余的时间,坐在家里的阳台上,简简单单的纪录一些基本的知识点,对我来说,既温暖又难得. 有朋友问我关于cp和ln建立符号链接(软链接)和硬链接的一些问题, ...

  9. session超时和cookie过期

    一.Cookie的过期和Session的超时有什么区别? 会话的超时由服务器来维护,它不同于Cookie的失效日期.首先,会话一般基于驻留内存的cookie不是持续性的cookie,因而也就没有截至日 ...

  10. 两个数据库表同步的可视化WEB同步程序

    因业务升级,现有一个数据库中的表需要与先前项目中的表进行数据同步,停用先前的表,这两个表只能按其中相同的一个字段同步,认真研究了一下,用WEB程序进行了处理,可视化显示处理进度,同步操作结果.使用到的 ...