bzoj 1089 SCOI2003严格n元树 递推
挺好想的,就是一直没调过,我也不知道哪儿的错,对拍也拍了,因为数据范围小,都快手动对拍了也不知道
哪儿错了。。。。
我们定义w[i]代表深度<=i的严格n元树的个数
那么最后w[d]-w[d-1]就是答案
那么对于w[i],我们由w[i-1]递推来,
我们考虑新加一个根节点,然后根节点有n个子节点,每个子节点都可以建一颗深度<=i-1的树,那么每个
子节点都有w[i-1]种选法,那么n个子节点就有w[i-1]^n选法,再加上都不选,就是深度为0的情况
那么w[i]:=(w[i-1]^n)+1;
//By BLADEVIL
var
w :array[-..] of ansistring;
n, d :longint;
a, b, c :array[..] of int64; function mul(s1,s2:ansistring):ansistring;
var
i, j :longint;
len1, len2 :longint;
s :ansistring;
begin
len1:=length(s1);
len2:=length(s2);
fillchar(c,sizeof(c),);
fillchar(a,sizeof(a),);
fillchar(b,sizeof(b),);
for i:= to len1 do a[(len1-i) div +]:=a[(len1-i) div +]*+ord(s1[i])-;
for i:= to len2 do b[(len2-i) div +]:=b[(len2-i) div +]*+ord(s2[i])-;
len1:=(len1+) div ;
len2:=(len2+) div ;
for i:= to len1 do
for j:= to len2 do
begin
c[i+j-]:=c[i+j-]+a[i]*b[j];
c[i+j]:=c[i+j]+c[i+j-] div ;
c[i+j-]:=c[i+j-] mod ;
end;
mul:='';
len1:=len1+len2+;
for i:=len1 downto do
begin
if c[i]< then mul:=mul+'';
if c[i]< then mul:=mul+'';
if c[i]< then mul:=mul+'';
str(c[i],s);
mul:=mul+s;
end;
while (mul[]='') and (length(mul)>) do delete(mul,,);
end; function mi(x:ansistring):ansistring;
var
p :longint;
ans, sum :ansistring;
begin
ans:='';
sum:=x;
p:=n;
while p<> do
begin
if p mod = then ans:=mul(ans,sum);
p:=p div ;
sum:=mul(sum,sum);
end;
mi:=ans;
end; function inc(x:ansistring):ansistring;
var
len :longint;
i :longint;
s :ansistring; begin
len:=length(x);
for i:= to len do c[i]:=ord(x[i])-;
c[len]:=c[len]+;
for i:=len downto do
begin
c[i-]:=c[i-]+c[i] div ;
c[i]:=c[i] mod ;
end;
inc:='';
len:=len;
for i:= to len do
begin
str(c[i],s);
inc:=inc+s;
end;
while (inc[]='') and (length(inc)>) do delete(inc,,);
end; function jian(s1,s2:ansistring):ansistring;
var
i :longint;
len1, len2 :longint;
s :ansistring;
begin
len1:=length(s1);
len2:=length(s2);
fillchar(c,sizeof(c),);
for i:= to len1 do a[len1-i+]:=ord(s1[i])-;
for i:= to len2 do b[len2-i+]:=ord(s2[i])-;
for i:= to len1 do c[i]:=a[i]-b[i];
for i:= to len1 do
if c[i]< then
begin
c[i]:=c[i]+;
c[i+]:=c[i+]-;
end;
jian:='';
for i:=len1 downto do
begin
str(c[i],s);
jian:=jian+s;
end;
while (jian[]='') and (length(jian)>) do delete(jian,,);
end; procedure main;
var
i :longint;
begin
readln(n,d);
if d= then
begin
writeln();
exit;
end;
w[]:='';
for i:= to d do w[i]:=inc(mi(w[i-]));
writeln(jian(w[d],w[d-]));
end; begin
main;
end.
bzoj 1089 SCOI2003严格n元树 递推的更多相关文章
- BZOJ 1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1591 Solved: 795[Submit][Statu ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
- BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度
题目大意:定义一棵深度为d的严格n元树为根的深度为0,最深的节点深度为d,且每一个非叶节点都有恰好n个子节点的树 给定n和d,求深度为d的严格n元树一共同拥有多少种 此题的递推部分并不难 首先我们设深 ...
- bzoj 1089: [SCOI2003]严格n元树【dp+高精】
设f[i]为深度为i的n元树数目,s为f的前缀和 s[i]=s[i-1]^n+1,就是增加一个根,然后在下面挂n个子树,每个子树都有s[i-1]种 写个高精就行了,好久没写WA了好几次-- #incl ...
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1089 分析: 第一感觉可以用一个通式求出来,但是考虑一下很麻烦,不好搞的.很容易发现最 ...
- 【BZOJ】1089: [SCOI2003]严格n元树(递推+高精度/fft)
http://www.lydsy.com/JudgeOnline/problem.php?id=1089 题意:求深度为d的n元树数目.(0<n<=32, 0<=d<=16) ...
- 【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)
题意:定义一棵树的所有非叶节点都恰好有n个儿子为严格n元树.问深度为d的严格n元树数目. 解法:f[i]表示深度为<=i的严格n元树数目.f[i]-f[i-1]表示深度为i的严格n元树数目.f[ ...
- BZOJ 1089 严格n元树 (递推+高精度)
题解:用a[i]表<=i时有几种树满足度数要求,那么这样就可以递归了,a[i]=a[i-1]^n+1.n个节点每个有a[i-1]种情况,那么将其相乘,最后加上1,因为深度为0也算一种.那么答案就 ...
- 1089: [SCOI2003]严格n元树
好久没更新了..于是节操掉尽python水过本来就水的题.. n,d=map(int, raw_input().split()) if d==0: print 1 else: f=[1] for i ...
随机推荐
- OpenCV入门:(六:基础画图函数)
有时程序中需要画一些基础的图形,例如直线,矩形,椭圆以及多边形.OpenCV中当然有此类函数. 1.函数介绍 直线line: , , ) img – 图像 pt1 – 直线起点 pt2 – 直线终点 ...
- 【个人训练】(UVa146)ID Codes
题意与解析 这题其实特别简单,求给定排列的后继.使用stl(next_permutation)可以方便地解决这个问题.但是,想要自己动手解就是另外一回事了.我的解法是从后往前找到第一个$a_i$比$a ...
- 关于python的闭包与装饰器的实验
首先看闭包,在嵌套函数内添加返回值,可以通过外部函数读取内部函数信息 #encoding=utf-8 #闭包应用 #先定义闭包函数,并使用 def outer(func): def inner(): ...
- cocos2d-x 中菜单类
菜单相关类包含:菜单类和菜单项类,菜单类图,从类图可见Menu类继承于Layer. 菜单项类图,从图中可见所有的菜单项都是从BaseMenuItem继承而来的,BaseMenuItem是抽象类,具体使 ...
- 《Deep Learning》第二章 线性代数 笔记
第二章 线性代数 2.1 名词 标量(scalar).向量(vector).矩阵(matrix).张量(tensor) 2.2 矩阵和向量相乘 1. 正常矩阵乘法: 2. 向量点积: 3. Hadam ...
- css3 移入移出动画
css: /*css3 鼠标移入移出动画 底部出现阴影层文字叙述*/ *{;} .div1{width:300px;height: 300px;text-align: center; backgrou ...
- 学习MVC中出现的一个BUG
BUG描述:No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.S ...
- 【Linux】Linux修改openfiles后不生效问题?
#次故障问题环境背景: Centos7.4物理机,升级过ssh和ntp: #一般只需要在此文件后面添加4行就行,配置后即可生效(exit再次登录即可生效),此次配置后没生效,reboot还是没生效,在 ...
- (转)mongdb性能优化收集
一.数据库最大连接数问题当你在后台日志中,发现大量“connection refused because too many open connections: 819”信息时,一般跟你没有设置合适的最 ...
- vue2.0 vue-cli项目中路由之间的参数传递
1.首先配置路由, import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export default new R ...