有了bzoj1430的经验解决这题就不是什么难事了
首先考虑度数确定的点,令tot=sigma(d[i]-1)
首先给这tot个数分配prufer编码的位置有C(tot,n-2)种方案
每个方案中是可以进行可重复排列的,对应tot!/[(d[1]-1)!*(d[2]-1)!*…*(d[k]-1)!] 这里都是已确定的度数的点
下面考虑无所谓的点,这些可以在prufer序列中随意分配
因此答案是m^(n-2-tot) (m表示未确定度数的点的个数)
根据乘法原理答案就是C(tot,n-2)*m^(n-2-tot)*tot!/[(d[1]-1)!*(d[2]-1)!*…*(d[k]-1)!]
=(n-2)!*m^(n-2-tot)/[(d[1]-1)!*(d[2]-1)!*…*(d[k]-1)!*(n-2-tot)!]
肯定要高精度,但是我们要尽量避免除法
考虑到这里计算出的方案一定是整数,于是我们可以先质因数分解,然后消去,这要就是单精度的高精度乘法了

 var d:array[..,..] of longint;
a,p,c:array[..] of longint;
ans:array[..] of longint;
l,i,m,x,n,w,j,t:longint;
f:boolean; procedure mul(x,y:longint);
var i,j,u,v:longint;
begin
for i:= to y do
begin
v:=;
for j:= to l do
begin
u:=ans[j]*x+v;
v:=u div ;
ans[j]:=u mod ;
end;
while v> do
begin
inc(l);
ans[l]:=v mod ;
v:=v div ;
end;
end;
end; begin
readln(n);
for i:= to n do
begin
f:=true;
for j:= to trunc(sqrt(i)) do
if i mod j= then
begin
f:=false;
break;
end;
if f then
begin
inc(t);
p[t]:=i;
end;
end;
for i:= to n do
begin
readln(a[i]);
if a[i]<>- then m:=m+a[i]-
else inc(w);
end;
for i:= to n- do
begin
for j:= to t do
d[i,j]:=d[i-,j];
x:=i;
j:=;
while x<> do //预处理阶乘的质因数分解
begin
while (x<>) and (x mod p[j]=) do
begin
x:=x div p[j];
inc(d[i,j]);
end;
inc(j);
end;
end;
ans[]:=;
l:=;
x:=w;
j:=;
while x<> do //m^(n--tot)的质因数分解
begin
while (x<>) and (x mod p[j]=) do
begin
x:=x div p[j];
c[j]:=c[j]+(n--m);
end;
inc(j);
end; for i:= to t do
c[i]:=c[i]+d[n-,i]-d[n--m,i]; for i:= to n do
if a[i]<>- then
begin
for j:= to t do
c[j]:=c[j]-d[a[i]-,j];
end;
for i:= to t do
mul(p[i],c[i]);
for i:=l downto do
write(ans[i]);
writeln;
end.

bzoj1005的更多相关文章

  1. 【bzoj1005】 HNOI2008—明明的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1005 (题目链接) 题意 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多 ...

  2. BZOJ1005 HNOI2008明明的烦恼(prufer+高精度)

    每个点的度数=prufer序列中的出现次数+1,所以即每次选一些位置放上某个点,答案即一堆组合数相乘.记一下每个因子的贡献分解一下质因数高精度乘起来即可. #include<iostream&g ...

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

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

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

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

  5. [BZOJ1005]Prufer数列+排列组合

    一棵树的Prufer数列 每次在剩下的树中找到标号最小的叶子节点(对于无根树而言即是度数为1的节点),删去. 同时将其父节点(即与其相连的唯一点)加入Prufer数列当中. 一个Prufer数列所对应 ...

  6. BZOJ1005明明的烦恼 Prufer + 分解質因數 + 高精度

    @[高精度, Prufer, 質因數分解] Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多 ...

  7. 「BZOJ1005」[HNOI2008] 明明的烦恼

    「BZOJ1005」[HNOI2008] 明明的烦恼 先放几个prufer序列的结论: Prufer序列是一种对有标号无根树的编码,长度为节点数-2. 具体存在无根树转化为prufer序列和prufe ...

  8. bzoj1005 [HNOI2008]明明的烦恼

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

  9. 【BZOJ1005】【HNOI2008】明明的烦恼

    又是看黄学长的代码写的,估计我的整个BZOJ平推计划都要看黄学长的代码写 原题: 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连 ...

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

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

随机推荐

  1. iOS-设置状态栏白色以及覆盖状态栏

    iOS-设置状态栏白色以及覆盖状态栏 将状态栏设置为白色 首先, 在info.plist中添加一个标记. View controller–based status bar appearance键值设置 ...

  2. iOS的内存管理

    在Objective-C 这种面向对象的语言里,内存管理是个重要的概念.要想用一门语言写出内存使用效率高而且又没有bug的代码,就得掌握其内存管理模型的种种细节. 一旦理解了这些规则,你就会发现,其实 ...

  3. IIS7保存配置文件及导入、导出、备份、还原

    IIS6下想要保存配置,只需在图形界面下点右键保存即可,但windows 2008下的IIS7却没有这样的选项, IIS7的配置文件有好几个,在c:\windows\system32\inetsrv\ ...

  4. js分家效应

    (原创文章,转载请注明出处) 有继承,那么就有分家.让我们看以下例子. var parents = function(){ } parents.prototype.money = 200; var c ...

  5. 利用html+ashx实现aspx的功能

    最近准备学习下ASP.NET,初期在网上看了些视频教程,准备将自己学习的东西整理整理,留着日后可以参考参考. 本文采用了html.ashx实现aspx,实现了一个最简单的动态网页效果,开发环境是VS2 ...

  6. Web Service属性介绍

    每个 Web Service都需要唯一的命名空间,它可使客户端应用程序区分出可能使用相同方法名称的 Web Service.在 Visual Studio.NET中创建的Web Service的默认命 ...

  7. power desinger 学习笔记三<批量执行sql语句>

    使用sql脚本导入表结构,直接 附带表的 约束.列的注释.真的可以哦 sql语句如下: create table test01 (   ID                   VARCHAR2(10 ...

  8. 如何管理你的 Javascript 代码

    今天不聊技术的问题,咱们来聊聊在前端开发中如何管理好自己的 Javascript 代码.首先,咱们先来说说一般都有哪些管理方式?我相信  seajs . requirejs  对于前端开发者而言都不陌 ...

  9. Java GC 日志输出分析

    搜到的几篇讲GC日志的文章,学到了很多东西.但是有些错误或者不够精确的地方. 因此自己尝试着总结一下. 先写个程序,然后结合程序解释每句话的意思. 运行参数 -Xms200M -Xmx200M -Xm ...

  10. Jmeter软件测试1--webservice测试

    写在前言 程序猿一枚,原本就是负责安安静静的撸代码,后来公司让兼任下测试的工作,还得照顾下面的几个测试兄弟,无奈本人毫无软件测试理论知识,下面的测试兄弟也是初级水平,又面临公司要求做webservic ...