写的很好的题解: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. easy ui 下拉框绑定数据select控件

    easy ui 中的下拉框控件叫做select,具体代码如下: html代码:①.这是一个公司等级的下拉框 <tr> <td>公司等级:</td> <td&g ...

  2. C# Windows - Button 控件

    .Net Framework提供了一个派生于Control的类System.Windows.Forms.ButtonBase,它实现了Button控件所需的基本功能. System.Windows.F ...

  3. iPhone手机屏幕的尺寸

    以下是 iPhone的型号和对应的屏幕宽高 英寸  宽 高  厚度 3.5   320 480 4s      ipad   系列   4   320 568 5   5s   4.7  375 66 ...

  4. 防止IFRAME页被嵌套

    防止IFRAME页被嵌套 //最大化窗口,防止窗口嵌套 if (parent.location != window.location){ parent.location = window.locati ...

  5. 严重: The web application [] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it.

    今日在重新部署项目时出现此问题,虽然对项目无影响,但问题就是问题.完整信息如下(使用idea工具): 十二月 05, 2015 11:44:27 上午 org.apache.catalina.star ...

  6. [转载]jQuery.lazyload详解 - 图片延时加载

    jQuery实现图片延迟加载,不知道是否可以节省带宽呢?有人知道吗? 这究竟只是一个视觉特效还是真的能延迟加载减少服务器的请求呢? <script type="text/javascr ...

  7. 团体程序设计天梯赛-练习集L1-008. 求整数段和

    L1-008. 求整数段和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆 给定两个整数A和B,输出从A到B的所有整数以及这些 ...

  8. spoj 362

    规律还是比较好找的  大数除法 #include <cstdio> #include <cstring> int len,a[1000],q; int cc[] = {0,1, ...

  9. POJ-1088 滑雪 (包含部分自用测试数据)

    这题最简单的想法是深搜+记录,由于数据量比较小.这么做可以AC.如果在h大的情况下这种递归方法总会有一些问题. 如果转换一下,这个可以使用递推来解决,先对高度进行由低到高的排序,然后顺序对这些高度计算 ...

  10. QueryPerformanceFrequency 和 QueryPerformanceCounter用法

    QueryPerformanceFrequency() - 基本介绍 类型:Win32API 原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFr ...