bzoj1005
有了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的更多相关文章
- 【bzoj1005】 HNOI2008—明明的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1005 (题目链接) 题意 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多 ...
- BZOJ1005 HNOI2008明明的烦恼(prufer+高精度)
每个点的度数=prufer序列中的出现次数+1,所以即每次选一些位置放上某个点,答案即一堆组合数相乘.记一下每个因子的贡献分解一下质因数高精度乘起来即可. #include<iostream&g ...
- 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)
[BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...
- 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度
[BZOJ1005][HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可 ...
- [BZOJ1005]Prufer数列+排列组合
一棵树的Prufer数列 每次在剩下的树中找到标号最小的叶子节点(对于无根树而言即是度数为1的节点),删去. 同时将其父节点(即与其相连的唯一点)加入Prufer数列当中. 一个Prufer数列所对应 ...
- BZOJ1005明明的烦恼 Prufer + 分解質因數 + 高精度
@[高精度, Prufer, 質因數分解] Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多 ...
- 「BZOJ1005」[HNOI2008] 明明的烦恼
「BZOJ1005」[HNOI2008] 明明的烦恼 先放几个prufer序列的结论: Prufer序列是一种对有标号无根树的编码,长度为节点数-2. 具体存在无根树转化为prufer序列和prufe ...
- bzoj1005 [HNOI2008]明明的烦恼
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3032 Solved: 1209 Description ...
- 【BZOJ1005】【HNOI2008】明明的烦恼
又是看黄学长的代码写的,估计我的整个BZOJ平推计划都要看黄学长的代码写 原题: 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连 ...
- 【bzoj1005】[HNOI2008]明明的烦恼
1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4175 Solved: 1660[Submit][Stat ...
随机推荐
- xslt中的常用函数
在我们制作标签的时候经常要使用到一些xslt的知识,以下整理了常用的xslt函数供大家使用. 常用字符串函数: contains('Welcome','e'):字符串包含,包含:true,不包含:fa ...
- windows10UWP:Segoe MDL2 图标指南
windows10 UWP 开发中,图标的使用非常广泛.为此,微软建议大家使用 Segoe MDL2 Assets 字体来获取图标.Segoe MDL2 Assets 包括了哪里图标,微软在 http ...
- 多目标遗传算法 ------ NSGA-II (部分源码解析) 二进制编码的个体解码操作 decode.c
种群解码函数 decode_pop 为包装函数, 核心调用函数为 decode_ind , 对每个个体进行解码. /* Routines to decode the population */ ...
- 14、SQL Server 存储过程
SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...
- ASP.NET和支付宝合作开发第三方接口的注意事项
最近公司和支付宝合作开发第三方接口的项目,这里把过程中需要注意的地方说明一下: 前提:一般来说单个银行不接收个人或私企开通支付接口.因此,和第三方支付公司合作,签订合约开放接口就是通行的做法. 流程: ...
- treeview右键添加新节点
private void advTree1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Righ ...
- Gprinter Android SDK V2.0 使用说明
佳博特约经销商,此店购买的打印机问题优先解决哟 https://shop107172033.taobao.com/index.htm?spm=2013.1.w5002-9520741823.2.V1p ...
- PHP代码批量加密
<?php error_reporting(E_ALL); ini_set('display_errors','1'); //批量加密码当前目录 $dirnow = getcwd(); $dir ...
- app图标和启动页设置
弄了一下午,终于把iOS中图标的设置和启动页的设置弄明白了.我想以后再也不会浑了. 进入正题: 一:apple 1).iPhone4s 3.5寸屏,也就是640*960,但在模拟器上正常用的是320* ...
- iOS 百度地图监听地图状态
百度地图提供了地图状态的对象BMKMapStatus ///此类表示地图状态信息 @interface BMKMapStatus : NSObject { float _fLevel; // 缩放比例 ...