写的很好的题解:http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html

我这种蒻蒻什么都不会啊……

代码:(copy的)

  var
a:array[..]of longint;
su,p:array[..]of longint;
b:array[..]of boolean;
ans:array[..]of longint;
i,j,m,n,s,k,w,sum,c:longint;
procedure add(t,d:longint);
var
i:longint;
begin
for i:= to s do
while t mod su[i]= do
begin
inc(p[i],d);
t:=t div su[i];
end;
end;
procedure cheng(t:longint);
var
i:longint;
begin
for i:= to c do
ans[i]:=ans[i]*t;
for i:= to c- do
begin
inc(ans[i+],ans[i] div );
ans[i]:=ans[i] mod ;
end;
while ans[c]>= do
begin
ans[c+]:=ans[c] div ;
ans[c]:=ans[c] mod ;
inc(c);
end;
end;
begin
readln(n);
for i:= to n do
read(a[i]);
fillchar(b,sizeof(b),true);
for i:= to n do
if b[i] then
begin
inc(s);
su[s]:=i;
for j:= to n div i do
b[i*j]:=false;
end;
fillchar(p,sizeof(p),);
sum:=n-;
k:=n;
for i:= to n do
if a[i]<>- then
begin
for j:= to a[i]- do
begin
add(sum,);
dec(sum);
add(j,-);
end;
dec(k);
end;
c:=;
fillchar(ans,sizeof(ans),);
ans[]:=;
for i:= to s do
for j:= to p[i] do
cheng(su[i]);
for i:= to sum do
cheng(k);
for i:=c downto do
write(ans[i]);
end.

尼玛,总是出现莫名的bug ,浪费我的时间!

 var i,j,sum,tot,n:longint;
a,b,p,d:array[..] of longint;
flag:boolean;
procedure init;
begin
readln(n);sum:=;tot:=;
for i:= to n do
begin
readln(d[i]);
if (d[i]=) or (d[i]>n-) then flag:=true;
if d[i]<>- then begin inc(tot);inc(sum,d[i]-);end;
end;
end;
procedure incc(x:longint);
var i:longint;
begin
for i:= to x do
begin
if x mod i= then
while x mod i= do
begin
inc(p[i]);
x:=x div i;
if x= then break;
end;
end;
end;
procedure decc(x:longint);
var i:longint;
begin
for i:= to x do
begin
if x mod i= then
while x mod i= do
begin
dec(p[i]);
x:=x div i;
if x= then break;
end;
end;
end;
procedure mul(x:longint);
var i:longint;
begin
for i:= to b[]+ do
begin
b[i]:=b[i]*x;
inc(b[i+],b[i] div );
b[i]:=b[i] mod ;
end;
while b[b[]+]<> do inc(b[]);
end;
procedure main;
begin
fillchar(p,sizeof(p),);
for i:=n--sum+ to n- do incc(i);
for i:= to n--sum do incc(n-tot);
for i:= to n do
if d[i]<>- then
begin
for j:= to d[i]- do decc(j);
end;
b[]:=;b[]:=;
for i:= to n do if p[i]<> then for j:= to p[i] do mul(i);
end;
procedure print;
begin
write(b[b[]]);
for i:=b[]- downto do
begin
if b[i]>= then write(b[i]) else
if b[i]>= then write('',b[i]) else
if b[i]>= then write('',b[i]) else
write('',b[i]);
end;
end;
begin
assign(input,'input.txt');assign(output,'output.txt');
reset(input);rewrite(output);
flag:=false;
init;
if flag then writeln() else begin main;print;end;
close(input);close(output);
end.

HNOI2008明明的烦恼的更多相关文章

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

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

  2. bzoj1005 [HNOI2008]明明的烦恼

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3032  Solved: 1209 Description ...

  3. 【bzoj1005】[HNOI2008]明明的烦恼

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

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

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

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

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

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

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

  7. 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)

    [BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...

  8. 【BZOJ 1005】 1005: [HNOI2008]明明的烦恼 (prufer数列+高精度)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4981  Solved: 1941 Description ...

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

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

  10. 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度

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

随机推荐

  1. jsp+oracle 排序分页+Pageutil类

    1.rownum和排序 Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了. SQL> select rownum ,id,n ...

  2. 父子进程间通信模型实现(popen)

    0.FILE *popen(const char *command, const char *type); popen 函数相当于做了以下几件事: 1.创建一个无名管道文件 2. fork() 3.在 ...

  3. Java中的异常处理(一)

    package second; public class C { public static void main(String[] args){ String name = null;//定义一个nu ...

  4. 【学习总结】OS X , IOS , IOS SDK , XCode之间的关系

    几个基本的概念 : OS X : 属于桌面PC级别(IMac,MacPro等)对应安装的操作系统 IOS : 属于移动设备级别(Iphone,Ipad等)对应安装的操作系统 XCode: 是一个IDE ...

  5. Core love JavaScript

    Core love JavaScript 前言 在 ASP.NET 团队的 Github 的主页上,有这样一个开源项目叫:"JavaScriptsServices",那么什么是 J ...

  6. 异常:HRESULT: 0x80070057 (E_INVALIDARG) 的处理

    碰到这个异常的原因很偶然: 现象:Solution在ReBuild过程中断电了,来电恢复了,重析编译整个Solution不报错,但在浏览页面时始终无法正常浏览,而在design的视图中,每个aspx的 ...

  7. 一个 XSD 实例

    一个 XSD 实例 本节会为您演示如何编写一个 XML Schema.您还将学习到编写 schema 的不同方法. XML 文档 让我们看看这个名为 "shiporder.xml" ...

  8. SQLite数据库简介(转)

    大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准 ...

  9. HDU 1158 Employment Planning (DP)

    题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...

  10. DJANGO中filter_horizontal和raw_id_fields的作用

    在作多项选择的操作方便性,及单项选择太多时,会有好一点的体验... class UserAuthorAdmin(admin.ModelAdmin): # raw_id_fields = ('group ...