BZOJ 1089 严格n元树 (递推+高精度)
题解:用a[i]表<=i时有几种树满足度数要求,那么这样就可以递归了,a[i]=a[i-1]^n+1。n个节点每个有a[i-1]种情况,那么将其相乘,最后加上1,因为深度为0也算一种。那么答案就是a[n]-a[n-1]。然后就是高精度的问题了,发现很久没有现码高精度没手感了,连高进度加法进位都出了些问题,需要特别注意。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct data{int len,a[2002];}a[35],c,p,t;
int n,d;
data mul(data a,data b){
memset(c.a,0,sizeof c.a);
for(int i=1;i<=a.len;i++)
for(int j=1;j<=b.len;j++){
c.a[i+j-1]+=a.a[i]*b.a[j];
c.a[i+j]+=c.a[i+j-1]/10000;
c.a[i+j-1]%=10000;
}c.len=2000;
while(c.len&&!c.a[c.len])c.len--;
return c;
}
data sum(data a,data b){
memset(c.a,0,sizeof c.a);
c.len=max(a.len,b.len);
for(int i=1;i<=c.len;i++){
c.a[i]+=a.a[i]+b.a[i];
c.a[i+1]+=c.a[i]/10000;
c.a[i]%=10000;
}c.len=2000;
while(c.len&&!c.a[c.len])c.len--;
return c;
}
data sub(data a,data b){
memset(c.a,0,sizeof c.a);
c.len=a.len;
for(int i=1;i<=a.len;i++){
c.a[i]=a.a[i]-b.a[i];
if(c.a[i]<0)c.a[i]+=10000,a.a[i+1]--;
}while(c.len&&!c.a[c.len])c.len--;
return c;
}
data power(data a,int b){
memset(p.a,0,sizeof p.a); p.len=1; p.a[1]=1;
while(b){
if(b&1)p=mul(p,a);
b>>=1; a=mul(a,a);
}return p;
}
data op(data a,int b){
t.len=1; t.a[1]=1;
return sum(power(a,b),t);
}
int main(){
scanf("%d%d",&n,&d);
if(!d)return puts("1"),0;
a[0].len=1; a[0].a[1]=1;
for(int i=1;i<=d;i++)a[i]=op(a[i-1],n);
a[d]=sub(a[d],a[d-1]);
printf("%d",a[d].a[a[d].len]);
for(int i=a[d].len-1;i;i--)printf("%04d",a[d].a[i]);
return 0;
}
BZOJ 1089 严格n元树 (递推+高精度)的更多相关文章
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1089 分析: 第一感觉可以用一个通式求出来,但是考虑一下很麻烦,不好搞的.很容易发现最 ...
- bzoj 1089 SCOI2003严格n元树 递推
挺好想的,就是一直没调过,我也不知道哪儿的错,对拍也拍了,因为数据范围小,都快手动对拍了也不知道 哪儿错了.... 我们定义w[i]代表深度<=i的严格n元树的个数 那么最后w[d]-w[d-1 ...
- [BZOJ]1089 严格n元树(SCOI2003)
十几年前的题啊……果然还处于高精度遍地走的年代.不过通过这道题,小C想mark一下n叉树计数的做法. Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该 ...
- PKU 2506 Tiling(递推+高精度||string应用)
题目大意:原题链接有2×1和2×2两种规格的地板,现要拼2×n的形状,共有多少种情况,首先要做这道题目要先对递推有一定的了解.解题思路:1.假设我们已经铺好了2×(n-1)的情形,则要铺到2×n则只能 ...
- 递推+高精度+找规律 UVA 10254 The Priest Mathematician
题目传送门 /* 题意:汉诺塔问题变形,多了第四个盘子可以放前k个塔,然后n-k个是经典的汉诺塔问题,问最少操作次数 递推+高精度+找规律:f[k]表示前k放在第四个盘子,g[n-k]表示经典三个盘子 ...
- [luogu]P1066 2^k进制数[数学][递推][高精度]
[luogu]P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻 ...
- 【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 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
随机推荐
- Deep Learning(深度学习)学习笔记整理系列之(八)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Javascript知识——事件
O(∩_∩)O~~又是新的一周开始了,今天还是在继续学习Javascript知识,今天主要讲了事件的知识.现在就总结下吧. 事件 事件一般是用于浏览器和用户操作进行交互.最早是 IE 和 Netsca ...
- 经典SQL语句集锦
下列语句部分是MsSql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELET ...
- linq中的cast<T>()及OfType<T>()
DataTable dt=...........//获取从数据库中取出的数据(假设只有一条记录) //Cast<T>()用来将非泛型的序列转换为泛型的序列 DataRow row=dt.R ...
- 关于gradle /Users/xxxx/Documents/workspace/fontmanager/.gradle/2.2.1/taskArtifacts/cache.properties (No such file or directory)报错办法
转自:http://www.cnblogs.com/raomengyang/p/4367620.html Android Studio报错: What went wrong: java.io.Fi ...
- Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】
package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...
- 剑指offer——从尾到头打印链表节点的值
输入一个链表,从尾到头打印链表每个节点的值. 输入描述:输入为链表的表头 输出描述:输出为需要打印的“新链表”的表头 一.问题分析 初拿到这个题目时,这应该是考察单向链表这一数据结构.单向链表的遍历总 ...
- python进阶4--pywin32
python 在windows下系统编程 1.环境配置:Python是没有自带访问windows系统API的库的,需要下载.库的名称叫pywin32,可以从网上直接下载. 以下链接地址可以下载: ht ...
- windows中使用Git工具连接GitHub(配置篇)
Git在源码管理领域目前占很大的比重了,而且开源的项目很多都转到GitHub上面了.例如:jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js, ...
- BZOJ 1037 [ZJOI2008]生日聚会Party(单调DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1037 [题目大意] 现在有n个男生,m个女生排成一行,要求不存在一个区间男女之差大于k ...