这是一个动态规划的题;

当初想到要用dp,但是一直想不到状态转移的方程;

题解上的原话:

  动态规划,设 g[i]表示总结点数为 i 的方案种数,另设 f[i][j]表示各个孩子的总结点数为
i,孩子的个数为 j 的方案数,那么有 g[i+1]=f[i][1]+f[i][2]+...+f[i][k],相当于添加一个根节
点之后变成完整的树,同时要把有 1 个孩子,2个孩子, ……,k 个孩子的情况都考虑进去。
对于 f[i][j]的求解可以用类似背包的方法去做,在求解的时候也会用到 g[1], g[2], ..., g[i]
的值,根据前面的那个 g[i+1]的表达式来看,这些 g[]已经在前面算出来了。

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 205
#define mod 1000000007
using namespace std;long long dp[maxn],f[maxn][22];int main()
{int t,n,k;scanf("%d",&t);while(t--){scanf("%d%d",&n,&k);memset(dp,0,sizeof dp);memset(f,0,sizeof f);f[0][0]=1;dp[1]=1;for(int i=1;i<n;i++){for(int j=1;j<=k;j++)for(int v=1;i-v>=j-1;v++)f[i][j]=(f[i][j]+dp[v]*f[i-v][j-1])%mod;for(int j=1;j<=k;j++)dp[i+1]=(dp[i+1]+f[i][j])%mod;}printf("%lld\n",dp[n]);}return 0;
}

View Code

转载于:https://www.cnblogs.com/yours1103/p/3470240.html

csuoj 1351: Tree Counting相关推荐

  1. c语言常用的条件编译,C语言条件编译

    使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 编译器 GCC #ifdef _ ...

  2. 牛客网【每日一题】4月13号 Accumulation Degree

    文章目录 题目描述 样例分析: 题意: 题解: 代码: 本题目传送 题目树学是这个题的简易版,也涉及换根问题,可以先看看这个 树学 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32 ...

  3. 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结

    文章目录 树状数组 lowbit 线段树与树状数组 单点修改 区间查询 区间修改 区间求和 二维树状数组 离线树状数组 例题 POJ:stars MooFest [SDOI2009]HH的项链 Tur ...

  4. [论文总结] 深度学习在农业领域应用论文笔记7

    文章目录 1. Applications of deep-learning approaches in horticultural research: a review,2020,Horticultu ...

  5. POJ 3585 Accumulation Degree 树形dp

    题目链接 Accumulation Degree Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5388   Accepte ...

  6. Poj·Accumulation Degree

    初见安~这里是传送门:Poj P3585 Description Trees are an important component of the natural landscape because o ...

  7. pat1004. Counting Leaves (30)

    1004. Counting Leaves (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A fam ...

  8. Decision Tree

    #①Aggregation Model 回顾上一篇文章讲到的聚合模型,三个臭皮匠顶一个诸葛亮.于是出现了blending,bagging,boost,stacking.blending有uniform ...

  9. LeetCode Counting Bits(动态规划)

    问题:给出数字n,求0-n这些数的1的位数. 思路:方法一使用x&(x-1)统计数字1的位数. 方法二[0,1) [2,3)表示形式为[10,11) [4,8)表示形式为[100,101, 1 ...

最新文章

  1. Jupyter Notebook中显示图像和数学公式
  2. IJCAI主席杨强:联邦学习的最新发展及应用
  3. SimpleDateFormat线程不安全
  4. 分布式加载数据训练神经网络
  5. 网络营销之下的泡泡玛特盲盒广受年轻用户群体的喜爱与关注
  6. redis中的hash
  7. java基础(网络编程---IP、端口、URL)
  8. WinUI 3 Preview 3 发布了,再一次试试它的性能
  9. 算法(5)-leetcode-explore-learn-数据结构-字符串
  10. sql IDENTITY(函数)
  11. php获取多个参数值,php-获取多个过滤器值参数
  12. 判断两个ListInteger是否包含同样的值,不考虑位置关系
  13. 以太坊源码 交易池(一) 基本流程解析
  14. linux系统的电脑要不要买,是否有必要为Linux购买一台相对较高配置的电脑?
  15. 在线报刊html代码,数字报纸HTML版本
  16. Vue中的自定义指令
  17. Joda-Time 简介
  18. android 录像 视频大小,Android相机 – 录制视频时预览放大
  19. docker安装报错:docker-ce conflicts with 2:docker-1.13.1-208.git7d71120.el7_9.x86_64
  20. JAVA商城源码-B2B2C商城系统-独立部署,一套源码终身可用

热门文章

  1. Spring 注解方式实现 事务管理
  2. 在页面中给flash加链接
  3. HTML与XHTML区别
  4. 大工18秋计算机文化基础在线测试2,大工18秋《计算机文化基础》在线测试2【答案】...
  5. sh脚本和bash脚本_在脚本中使用Bash陷阱
  6. 数字化转型 数字分析_数字化转型背后的公司领先于开放的领导者
  7. 使用devops的团队_DevOps与兼职社区团队兼容吗?
  8. arduino 3d打印机_Firefox OS流视频,使用Arduino销售3D打印机等
  9. linux急救模式_抢救Linux! Windows XP支持今天终止
  10. 知道 | 同学,你都了解关系型数据库,确定不了解一下这种数据库吗?