#dp,高精度#洛谷 4295 [SCOI2003]严格N元树
题目
求有多少棵严格 \(n\) 叉树深度为 \(k\)
分析
考虑往下放子孙挺难维护的,考虑在上面换新的根。
设 \(dp[i]\) 表示深度不超过 \(i\) 的方案数,那么
\(dp[i]=dp[i-1]^n+1\)
就是新开一个根,每个子节点的选择独立,为 \(dp[i-1]^n\),再加上只有一个根节点的情况。
最后答案就是 \(dp[k]-dp[k-1]\)
代码
#include <cstdio>
#include <cstring>
using namespace std;
const int N=1011; int ans[N],Ans[N],C[N],t[N],k,n;
void one(int *ans){
int now=1;
while (ans[now]==9) ++now;
if (now>ans[0]) ans[0]=now;
++ans[now];
for (int i=1;i<now;++i) ans[i]=0;
}
void mul(int *A,int *B){
memset(C,0,sizeof(C));
for (int i=1;i<=A[0];++i)
for (int j=1;j<=B[0];++j)
C[i+j-1]+=A[i]*B[j];
C[0]=A[0]+B[0]+1;
for (int i=1;i<C[0];++i) C[i+1]+=C[i]/10,C[i]%=10;
while (C[0]&&!C[C[0]]) --C[0];
memcpy(A,C,sizeof(C));
}
void ksm(int *ans){
memset(t,0,sizeof(t)),t[t[0]=1]=1;
for (int y=k;y;y>>=1,mul(ans,ans))
if (y&1) mul(t,ans);
memcpy(ans,t,sizeof(t));
}
void dec(int *ans){
int g=0,s;
for (int i=1;i<=ans[0];++i){
s=ans[i]-Ans[i]-g;
if (s<0) g=1,ans[i]=s+10;
else g=0,ans[i]=s;
}
while (ans[0]&&!ans[ans[0]]) --ans[0];
}
int main(){
scanf("%d%d",&k,&n);
if (!n||k==1) return !printf("1");
ans[ans[0]=1]=1;
for (int i=1;i<=n;++i){
memcpy(Ans,ans,sizeof(ans));
ksm(ans),one(ans);
}
dec(ans);
for (int i=ans[0];i;--i) putchar(ans[i]+48);
return 0;
}
#dp,高精度#洛谷 4295 [SCOI2003]严格N元树的更多相关文章
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
- 【线型DP】洛谷P2066 机器分配
[线型DP]洛谷P2066 机器分配 标签(空格分隔): 线型DP [题目] 题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配 ...
- 【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)
[BZOJ1089][SCOI2003]严格n元树(高精度,动态规划) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示深度为\(i\)的\(n\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...
- 洛谷 P3373 【模板】线段树 2
洛谷 P3373 [模板]线段树 2 洛谷传送门 题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 xx 将某区间每一个数加上 xx 求出某区间每一个数的和 输入格式 第一 ...
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1899 Solved: 954[Submit][Statu ...
- BZOJ 1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1591 Solved: 795[Submit][Statu ...
- BZOJ1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 762 Solved: 387[Submit][Status ...
- SCOI2003 严格N元树
SCOI2003 严格N元树 Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的 ...
- Bzoj3197/洛谷3296 [SDOI2013]刺客信条assassin(树的重心+树Hash+树形DP+KM)
题面 Bzoj 洛谷 题解 (除了代码均摘自喻队的博客,可是他退役了) 首先固定一棵树,枚举另一棵树,显然另一棵树只有与这棵树同构才有可能产生贡献 如果固定的树以重心为根,那么另一棵树最多就只有重心为 ...
- 洛谷 P2495 [SDOI2011]消耗战(虚树,dp)
题面 洛谷 题解 虚树+dp 关于虚树 了解一下 具体实现 inline void insert(int x) { if (top == 1) {s[++top] = x; return ;} int ...
随机推荐
- Mysql 插入timestamp没有使用默认值问题
在一次升级过程中,发现Mysql插入数据报了个错 Column 'create_time' cannot be null. 但是看了下这个字段虽然是非null,但是是有默认值的 `create_tim ...
- 产品分享:Qt数学函数公式学科工具,当前版本v1.0.0
若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121194536红胖子(红模仿)的博文大全:开发技术集合 ...
- rpm的一些命令
rpm -q xx #查询当前的包是否安装 rpm -qi xx # 查询当前包的详细信息 rpm -qpi 包文件路径 # 没装之前先查看包的信息 rpm -qpl 包文件路径 # 预计装上后会在系 ...
- 我的第一个项目(十五) :完成数据保存功能(后端,改update)
好家伙, 代码已开源(Gitee) PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: ...
- 【Azure 应用服务】App Service for Linux环境中,如何解决字体文件缺失的情况
问题描述 部署在App Service for Linux环境中的Web App.出现了字体文件缺失的问题,页面显示本来时中文的地方,区别变为方框占位. 问题分析 在应用中,通常涉及到显示问题的有两个 ...
- 【Azure Redis 缓存】Azure Redis Cluster 在增加分片数时失败分析
问题描述 Azure Redis Cluster 在增加分片数时失败,错误消息为: ResponseBody: { "error": { "details": ...
- Android drawable与mipmap的区别(android资源文件放置位置)
1.Drawable Android 把可绘制的对象抽象为Drawable,不同的图形图像代表着不同的darwable类型, 通常我们在代码中不会直接接触drawable实现类的,是由android ...
- 使用 Docker 部署 Next Terminal 轻量级堡垒机
1)Next Terminal 介绍 官网:https://next-terminal.typesafe.cn/ GitHub:https://github.com/dushixiang/next-t ...
- 跨域测试代码 - console 里面直接就可以测试
跨域测试代码 - console 里面直接就可以测试 var xhr = new XMLHttpRequest(); xhr.open("GET", "https://w ...
- 实时云渲染技术_如何助力VR虚拟现实走向成熟?
近年来,虚拟现实(Virtual Reality, VR)技术在市场上的应用越来越广泛,虚拟现实已成为一个热门的科技话题.相关数据显示,2019年至2021年,我国虚拟现实市场规模不断扩大,从2019 ...