【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\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...
随机推荐
- [HNOI2012] 永无乡 题解
题意: n个点,有加边操作,询问与某一点处于相同的联通块的点中权值第k大的点 思路: 对所有点建立一棵权值线段树,加边就配合并查集进行线段树合并 反思: 动态开点,权值线段树要用sum[g[x=fin ...
- HDU 3062 简单的2-SAT问题
在2-SAT,最让我纠结的还是添加有向线段的函数了 void add_clause(int i,int a,int j,int b){ int m=2*i+a; int n=2*j+b; ...
- 虫食算(codevs 1064)
题目描述 Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 + 8468#6 ...
- 【HDOJ6301】Distinct Values(贪心,set)
题意:给定一个n个数的数列与m个区间,要求每个区间内的数字互不相同,求使得数列字典序最小的方案 n<=1e5 思路: #include<cstdio> #include<vec ...
- Java有几种线程池?
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程newFixed ...
- XCode 或者ITune 添加账号时,提示:This action could not be completed. 或者 Access Privileges
当遇到This action could not be completed 或者 You do not have enough access privileges for this operation ...
- POJ 2348 Euclid's Game【博弈】
题目链接: http://poj.org/problem?id=2348 题意: 给定两个数,两个人每次从较大数中减去较小数的倍数,谁先得到0谁获胜,为谁赢? 分析: 令一种可能出现的整数对为(a,b ...
- 纯Java Web项目下的Session共享方案收集(待实践)
1.使用filter方法存储 这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简单容易控制. 可以使用memcached-session-filter 官方网 ...
- 无线网卡与本地连接不能同时使用&一机多网络的优先级设置
无线网卡与本地连接不能同时使用&一机多网络的优先级设置 2012-05-30 20:39 初次记录 2012-08-09 10:32 修订 题目中的两个问题,其实都可以归结为一个问题,即网络优 ...
- Windows7系统下优化固态硬盘
一.AHCI硬盘模式可提高硬盘性能,确定你的固态硬盘是运行在AHCI模式下,打开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesmsahci” ...