题目大意是:

给定一个n,k,表示树上共有n个节点,每个节点最多有k个叶子,问一共多少种摆法,答案对1000000007取模

这里定义一个dp[i]表示 i 个节点对应有多少种方法

f[i][j] 表示一个除去顶点的树中,这个顶点延伸出 j 个子树 , 这j个子树中共有i 个点

那么只要在f[i][j]上添加一个顶点就得到了 dp[i]

所以dp[i+1] = f[i][0] + f[i][1] ......+f[i][k]

f[i][j] = ∑(f[i-k][j-1]*dp[k]) k<=i;

 #include <cstdio>
#include <cstring>
#include <iostream>
#define maxn 205
const int mod = ;
using namespace std; long long dp[maxn],f[maxn][]; int main()
{
// freopen("a.in" , "r" , stdin);
int T,n,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d" , &n , &k);
memset(f , , sizeof(f));
memset(dp , , sizeof(dp));
f[][] = ;
dp[] = ;
for(int i= ; i<n ; i++){
for(int j=k ; j>= ; j--){
for(int t= ; t<=i ; t++){
f[i][j] += (f[i-t][j-]*dp[t])%mod;
f[i][j]%=mod;
}
// cout<<"i: "<<i<<" j: "<<j<<" "<<f[i][j]<<endl;;
} for(int j= ; j<=k ; j++){
dp[i+] += f[i][j];
dp[i+]%=mod;
}
// cout<<"i: "<<i<<" "<<dp[i]<<endl;
}
printf("%lld\n" , dp[n]);
}
return ;
}

COJ 1351 Tree Counting 动态规划的更多相关文章

  1. CSU 1351 Tree Counting

    原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1351 DP题,毫无疑问.由于动态规划题目做得少.不熟悉,刚开始自己用f[i]表示用 i ...

  2. csuoj 1351: Tree Counting

    这是一个动态规划的题: 当初想到要用dp,但是一直想不到状态转移的方程: 题解上的原话: 动态规划,设 g[i]表示总结点数为 i 的方案种数,另设 f[i][j]表示各个孩子的总结点数为i,孩子的个 ...

  3. 【CodeForces】914 H. Ember and Storm's Tree Game 动态规划+排列组合

    [题目]H. Ember and Storm's Tree Game [题意]Zsnuoの博客 [算法]动态规划+排列组合 [题解]题目本身其实并不难,但是大量干扰因素让题目显得很神秘. 参考:Zsn ...

  4. HDU 5909 Tree Cutting 动态规划 快速沃尔什变换

    Tree Cutting 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5909 Description Byteasar has a tree T ...

  5. BZOJ 3227 [Sdoi2008]红黑树(tree) ——贪心 动态规划

    首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include < ...

  6. 自由树的计数 Labeled unrooted tree counting

    问题: 4个标记为1,2,3,4的节点构成自由树(算法导论里的定义,连接着,无环,无向的图),一共有多少种构造方法?如果N个节点呢? 解决方法: 4个节点可以通过穷举的方式得到答案,一共有16中方式. ...

  7. POJ3046--Ant Counting(动态规划)

    Bessie was poking around the ant hill one day watching the ants march to and fro while gathering foo ...

  8. ACM学习历程—HDU 5534 Partial Tree(动态规划)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题目大意是给了n个结点,让后让构成一个树,假设每个节点的度为r1, r2, ...rn,求f(x ...

  9. CodeChef Max-digit Tree(动态规划)

    传送门. 题解: 最主要的问题是如何判断一个数是否合法,这就需要发现性质了. 这个状态划分还是不太容易想到, 每次加的数\(∈[0,k)\),也就是个位一直在变变变,更高的位每次都是加一,这启发我们状 ...

随机推荐

  1. bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 1944  Solved: 759[Submit][St ...

  2. P4576 [CQOI2013]棋盘游戏

    传送门 很显然,除非白子和黑子相邻,否则必然是黑子获胜虽然我并没有看出来 那么现在对黑子来说它要尽可能快的赢,对白子它要多苟一会儿 然后就是这个叫做对抗搜索的东西了 //minamoto #inclu ...

  3. [Swift通天遁地]一、超级工具-(7)创建一个图文并茂的笔记本程序

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. python自动化测试学习笔记-10YAML

    之前学习的编写测试用例的方法,都是从excel中编写接口的测试用例,然后通过读取excel文件进行接口自动化测试,这种方式我们叫做数据驱动的方式,由于excel操作起来不灵活,无法实现关联关系的接口测 ...

  5. 生成 Guid

    //生成Guid    function getGuidGenerator() {        var S4 = function () {            return (((1 + Mat ...

  6. lower_bound和upper_bound函数

    lower_bound(ForwardIter first,ForwardIter last,const_TP & val) upper_bound(ForwardIter first,For ...

  7. mysql之命令行导入导出

    命令介绍 mysqldump:导出命令,在系统”命令提示符“窗口直接使用,如果提示没有此命令(前提是已经安装成功mysql),在环境变量中的path添加mysql,即path=D:\xxx\mysql ...

  8. 关于vue项目 路由中 使用的坑

    关于vue路由重定向的时候 记得一定要先声明先声明

  9. Ubantu下 docker的安装

    另一种方法 1.切换到root权限或者用sudo 2.升级source列表并保证https和ca证书成功安装 # apt-get update # apt-get install apt-transp ...

  10. Python基础语法(转)

    作者:Peter 出处:http://www.cnblogs.com/Peter-Zhang/   Python 基础语法(一) Python的特点 1. 简单 Python是一种代表简单思想的语言. ...