bzoj1089严格n元树——DP+高精度
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089
f[d]为深度小于等于d的树的个数;
从根节点出发,有n个子树,乘法原理可以得到 f[d] = f[d-1] ^ n + 1 ,加1是因为也可以没有根节点;
需要高精度,直接重载运算符十分方便。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const rad=;
int n,d;
struct data{
int v[],l;
}f[];
data operator*(data a,data b)
{
data c;
for(int i=;i<=a.l+b.l;i++)c.v[i]=;
for(int i=;i<=a.l;i++)
for(int j=;j<=b.l;j++)
c.v[i+j-]+=a.v[i]*b.v[j];
c.l=a.l+b.l;
for(int i=;i<=c.l;i++)
{
if(c.v[i]>=rad)
{
if(i==c.l)
{
c.l++;
c.v[c.l]=c.v[i]/rad;
}
else c.v[i+]+=c.v[i]/rad;
c.v[i]%=rad;
}
}
while(c.v[c.l]==&&c.l>)c.l--;
return c;
}
data operator^(data a,int n)
{
data c;
c.l=;c.v[]=;
while(n)
{
if(n&)c=c*a;
a=a*a;
n>>=;
}
return c;
}
data operator+(data a,int x)
{
a.v[]+=x;
int now=;
while(a.v[now]>=rad)a.v[now+]+=a.v[now]/rad,a.v[now]%=rad,now++;
a.l=max(a.l,now);
return a;
}
data operator-(data a,data b)
{
for(int i=;i<=a.l;i++)
{
a.v[i]-=b.v[i];
if(a.v[i]<)
{
a.v[i]+=rad;
a.v[i+]--;
}
}
while(a.v[a.l]==&&a.l>)a.l--;
return a;
}
//void print(data a)
//{
// for(int i=a.l;i;i--)
// printf("%d",a.v[i]);
//}
void print(data a)
{
printf("%d",a.v[a.l]);
for(int i=a.l-;i;i--)
printf("%03d",a.v[i]);
printf("\n");
}
int main()
{
scanf("%d%d",&n,&d);
if(d==)
{
printf("");return ;
}
f[].l=;f[].v[]=;
for(int i=;i<=d;i++)
f[i]=(f[i-]^n)+;//+ 必须加括号!!!
print(f[d]-f[d-]);
return ;
}
bzoj1089严格n元树——DP+高精度的更多相关文章
- BZOJ1089:[SCOI2003]严格n元树(DP,高精度)
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- 【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)
[BZOJ1089][SCOI2003]严格n元树(高精度,动态规划) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示深度为\(i\)的\(n\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1899 Solved: 954[Submit][Statu ...
- BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度
题目大意:定义一棵深度为d的严格n元树为根的深度为0,最深的节点深度为d,且每一个非叶节点都有恰好n个子节点的树 给定n和d,求深度为d的严格n元树一共同拥有多少种 此题的递推部分并不难 首先我们设深 ...
- P4295 [SCOI2003]严格N元树 DP
思路:DP 提交:\(5\)次 错因:2次高精写错(我太菜了),2次写错特判 题解: 设\(f[i]\)表示深度\(\leq i\)的严格\(n\)元树的数目,有 \[f[i]=pow(f[i-1], ...
- [bzoj1089]严格n元树
设f[i]表示深度不超过i的方案数,那么有f[0]=1,$f[i]=f[i-1]^{n}+1$,然后用高精度即可(注意深度恰好为d还要用f[d]-f[d-1]才是答案) 1 #include<b ...
- bzoj1089严格n元树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089 这是一种套路:记录“深度为 i ”的话,转移需要讨论许多情况:所以可以记录成“深度&l ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1089 分析: 第一感觉可以用一个通式求出来,但是考虑一下很麻烦,不好搞的.很容易发现最 ...
随机推荐
- stm32f103和s3c2440配置
stm32 s3c2440 外部晶振: 8MHz 12MHz
- Python学习系列之logging模块
实例一:日志写进一个文件 代码: import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filen ...
- 一次mysql优化经历
某日运维突然说无线终端的频道页接口訪问量非常大,memcache缓存扛只是来.导致mysql并发查询量太大,导致server不停地宕机,仅仅能不停地重新启动机器.遗憾的是运维并没有告诉mysql查询量 ...
- Android 特别大的Activity和Fragment的生命周期图
这么 这么大的图.不做太多解释,哈哈,真的是棒棒的. 代码測试下载:http://download.csdn.net/detail/pcaxb/8906085
- ActiveMQ(六) 转
package pfs.y2017.m11.mq.activemq.demo07; import org.apache.activemq.ActiveMQConnectionFactory; impo ...
- Struts拦截器(转)
xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &qu ...
- ubuntu 系统启动时找不到根文件系统
报出的错误大概为: Alert! /dev/disk/by-uuid/ ....... does not exist 最后进入了 initramdiskfs 的命令行终端 . 输入 blkid 命令却 ...
- 阿里云安装nginx 启动失败的原因。
阿里云编译安装nginx服务器后启动一直报下面错误. 百度了一圈,看到一个说要先关掉apache服务,感觉这个好像是对的,立马做了下面操作. 果然把nginx起了起来. 从这边才知道apache和ng ...
- JAVA的WebService规范JAX-WS
JAX-WS的服务端.客户端双方传输数据使用的SOAP消息格式封装数据. 一.下载apache-cxf-3.1.4.zip. 二.编写服务端 1.编写一个Web Service用来传输参数的类 pac ...
- Seesion和Cookie详解2
转载来自: https://www.toutiao.com/a6693986851193094664/?tt_from=weixin&utm_campaign=client_share& ...