P4295 [SCOI2003]严格N元树 DP
思路:DP
提交:\(5\)次
错因:2次高精写错(我太菜了),2次写错特判
题解:
设\(f[i]\)表示深度\(\leq i\)的严格\(n\)元树的数目,有
\]
即一个点,对于每一个孩子深度都可以是\(1\)到\(i-1\)的严格\(n\)元树,或是仅仅一个点(作为根)。
所以最后的答案是\(f[i]-f[i-1]\)
需要高精。
#include<cstdio>
#include<iostream>
#include<cstring>
#define R register int
using namespace std;
namespace Luitaryi {
template<class I> inline I g(I& x) { x=0;
register I f=1; register char ch; while(!isdigit(ch=getchar())) f=ch=='-'?-1:f;
do x=x*10+(ch^48); while(isdigit(ch=getchar())); return x*=f;
} const int N=10010;
int n,d,a[N],b[N],f[N],mem[N],sza,szb;
inline void print(int* f,int len) {
for(R i=len;i;--i) cout<<f[i]; cout<<endl;
}
inline void mul(int a[N],int b[N],int& sza,int szb) {
R tmp[N]; memset(tmp,0,sizeof(tmp));
for(R i=1;i<=sza;++i) for(R j=1;j<=szb;++j)
tmp[i+j-1]+=a[i]*b[j];
sza+=szb-1; for(R i=1;i<=sza;++i) tmp[i+1]+=tmp[i]/10,tmp[i]%=10;
while(tmp[sza+1]) ++sza,tmp[sza+1]+=tmp[sza]/10,tmp[sza]%=10;
memcpy(a,tmp,sizeof(int)*(sza+3));
}
inline void main() {
g(n),g(d); if(d==0) return (void) puts("1"); f[1]=1,sza=1;
for(R i=1;i<=d;++i) { memcpy(mem,f,sizeof(int)*(sza+3)),szb=sza;
for(R j=2;j<=n;++j) mul(f,mem,sza,szb); ++f[1];
for(R j=1;j<=sza;++j) f[j+1]+=f[j]/10,f[j]%=10;
while(f[sza+1]) ++sza,f[sza+1]+=f[sza]/10,f[sza]%=10;
} for(R i=1;i<=sza;++i) f[i]-=mem[i];
for(R i=1;i<=sza;++i) if(f[i]<0) f[i]+=10,--f[i+1];
while(!f[sza]) --sza; while(sza) printf("%d",f[sza]),--sza;
}
} signed main() {Luitaryi::main(); return 0;}
2019.08.16
84
P4295 [SCOI2003]严格N元树 DP的更多相关文章
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1899 Solved: 954[Submit][Statu ...
- BZOJ1089:[SCOI2003]严格n元树(DP,高精度)
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[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 ...
- 【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)
[BZOJ1089][SCOI2003]严格n元树(高精度,动态规划) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示深度为\(i\)的\(n\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...
- SCOI2003 严格N元树
SCOI2003 严格N元树 Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的 ...
- BZOJ1089 [SCOI2003]严格n元树 【dp + 高精】
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- bzoj 1089: [SCOI2003]严格n元树【dp+高精】
设f[i]为深度为i的n元树数目,s为f的前缀和 s[i]=s[i-1]^n+1,就是增加一个根,然后在下面挂n个子树,每个子树都有s[i-1]种 写个高精就行了,好久没写WA了好几次-- #incl ...
随机推荐
- Java的设计模式(3)--工厂模式
工厂模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到子类. 工厂模式涉及四种角色: 抽象产品(Product):抽象类或者接口,负责定义具体产品必须实现的方法 ...
- 分布排序(distribution sorts)算法大串讲
ref : https://dsqiu.iteye.com/blog/1707383 本文内容框架: §1 鸽巢排序(Pigeonhole) §2 桶排序(Bucket Sort) §3 基数 ...
- SCALA基础知识学习
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...
- mybaits实现oracle批量新增数据,回填主键
项目有需求,百度了很久,反正他们说的方法,我都没成功,我也不知道是不是我写代码的姿势不正确,没办法只能自己想法子了 我们这个项目用到了通过Mapper,通用Mapper里通过OracleProvide ...
- jvm垃圾回收器介绍
上篇文章中我们讨论了jvm的内存区域,这篇文章我们来讨论针对的内存区域的垃圾回收机制. 其实针对垃圾回收我们通常考虑三个问题:1.哪些内存需要回收?2.什么时候回收?3.如何回收?下面我们针对这三个问 ...
- 在论坛中出现的比较难的sql问题:4(row_number函数+子查询 分组连续编号问题)
原文:在论坛中出现的比较难的sql问题:4(row_number函数+子查询 分组连续编号问题) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 求一查询语句 http: ...
- ASP.NET WEB应用程序(.network4.5)MVC 工作原理
MVC就是模型.视图.控制器. 项目中控制器对应Controllers目录,视图对应Views目录,模型对应Models目录. 1.当我们创建一个控制器时,比如在Controllers目录新建一个名字 ...
- Django 之一些request封装的常用功能
一些常用的request对象属性 介绍 HTTP 应用的信息是通过 请求报文 和 响应报文 传递的,关于更多的相关知识,可以阅读<HTTP权威指南>获得. 其中 请求报文 由客户端发送,其 ...
- springboot启动流程(六)ioc容器刷新前prepareContext
所有文章 https://www.cnblogs.com/lay2017/p/11478237.html prepareContext方法核心逻辑 上一篇文章中,我们通过createApplicati ...
- 基于【 Docker】二 || Docker的入门安装
一.前提条件 本文介绍 Docker CE 的安装使用. 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3. ...