【SCOI 2003】 严格n元树
【题目链接】
【算法】
f[i]表示深度小于等于i的严格n元树
显然,一棵深度小于等于i的严格n元树,就是一个根节点,下面有n棵子树,这n棵子树都是深度小于等于i-1的严格n元树,每棵子树有f[i-1]种形态,根据乘法原理,
可知f[i] = f[i-1] ^ n + 1
那么最后f[d] - f[d-1]就是答案
注意要用高精度计算
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 35
#define MAXL 400 int i,n,d;
struct INT
{
int len;
int num[MAXL];
} ans,f[MAXN]; inline INT add(INT x)
{
int i;
reverse(x.num,x.num+x.len);
x.num[]++;
for (i = ; i < x.len; i++)
{
if (x.num[i] >= )
{
x.num[i+]++;
x.num[i] %= ;
}
}
while (x.num[x.len]) x.len++;
reverse(x.num,x.num+x.len);
return x;
}
inline void multipy(INT &a,INT b)
{
int i,j;
static INT res;
memset(res.num,,sizeof(res.num));
reverse(a.num,a.num+a.len);
reverse(b.num,b.num+b.len);
for (i = ; i < a.len; i++)
{
for (j = ; j < b.len; j++)
{
res.num[i+j] += a.num[i] * b.num[j];
}
}
res.len = a.len + b.len - ;
while (!res.num[res.len-]) res.len--;
for (i = ; i < res.len; i++)
{
if (res.num[i] >= )
{
res.num[i+] += res.num[i] / ;
res.num[i] %= ;
}
}
if (res.num[res.len]) res.len++;
reverse(res.num,res.num+res.len);
a = res;
}
inline INT _minus(INT a,INT b)
{
static INT res;
memset(res.num,,sizeof(res.num));
reverse(a.num,a.num+a.len);
reverse(b.num,b.num+b.len);
for (i = ; i < a.len; i++)
{
if (a.num[i] >= b.num[i]) res.num[i] = a.num[i] - b.num[i];
else
{
a.num[i+]--;
res.num[i] = a.num[i] + - b.num[i];
}
}
res.len = a.len;
while (!res.num[res.len-]) res.len--;
reverse(res.num,res.num+res.len);
return res;
}
inline INT power(INT a,int n)
{
INT res;
if (!n) return (INT){,{}};
if (n == ) return a;
res = power(a,n>>);
multipy(res,res);
if (n & ) multipy(res,a);
return res;
}
inline void output(INT x)
{
int i;
for (i = ; i < x.len; i++) printf("%d",x.num[i]);
puts("");
} int main()
{ scanf("%d%d",&n,&d);
f[] = (INT){,{}};
for (i = ; i <= d; i++) f[i] = add(power(f[i-],n));
ans = _minus(f[d],f[d-]);
output(ans); return ;
}
【SCOI 2003】 严格n元树的更多相关文章
- BZOJ 1089 (SCOI 2003) 严格n元树
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- BZOJ 1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1591 Solved: 795[Submit][Statu ...
- [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) ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
- BZOJ1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 762 Solved: 387[Submit][Status ...
- [BZOJ]1089 严格n元树(SCOI2003)
十几年前的题啊……果然还处于高精度遍地走的年代.不过通过这道题,小C想mark一下n叉树计数的做法. Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该 ...
- 【bzoj1089】严格n元树
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d(根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严格 ...
- 【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)
[BZOJ1089][SCOI2003]严格n元树(高精度,动态规划) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示深度为\(i\)的\(n\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...
随机推荐
- hdu3709 Balanced Number 树形dp
A balanced number is a non-negative integer that can be balanced if a pivot is placed at some digit. ...
- hdu2157:How many ways??
n<=20个点m<=100条边有向图不带权,t个询问问Ai到Bi的经过k<=20条边方案数多少. f[i][j]--i到j的方案数,,初始化成初邻接矩阵,这样做一次就得到2条路最短路 ...
- 解决WordPress安装主题/插件提示输入FTP帐号的问题
有时比较着急想要安装一款主题或插件,却提示需要输入 FTP 帐号密码……这种情况蛮让人讨厌的,以下就是最完美的解决方法: 方法一:在 wp-config.php 文件加入代码 如果使用的是虚拟主机,可 ...
- PAT (Advanced Level) 1031. Hello World for U (20)
简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...
- CodeForces 596B Wilbur and Array
简单题,一个一个操作,最后就是答案. #include<cstdio> #include<cstring> #include<cmath> #include< ...
- openstack swift memcached
如果生成的token总变,说明没有启动memcached: swift@vincent-virtual-machine /usr/bin $ memcached -p 11211 -m 64m -d ...
- Javascript小数取整方法收集
1.丢弃小数部分,保留整数部分 parseInt(7/2) 2.向上取整,有小数就整数部分加1 Math.ceil(7/2) 3.四舍五入 Math.round(7/2) 4.向下取整 Math.fl ...
- Spring基于注解的配置概述
以下内容引用自http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration.html: 从Spring 2.5开始 ...
- 无线网卡与本地连接不能同时使用&一机多网络的优先级设置
无线网卡与本地连接不能同时使用&一机多网络的优先级设置 2012-05-30 20:39 初次记录 2012-08-09 10:32 修订 题目中的两个问题,其实都可以归结为一个问题,即网络优 ...
- C#内存管理—职场生存的必修课
前言 在职场中,确立自身的技术水平很重要,因为,如果你被标记成了技术菜鸟,那么你的工作一旦做快了,大家就会一致的认为这个任务比较简单:如果你未如期完成,则会被各种明嘲暗讽,你不但无法获得合理的表扬,还 ...