原题链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1351

  DP题,毫无疑问。由于动态规划题目做得少、不熟悉,刚开始自己用f[i]表示用 i 个节点的方案数,然后就需要逐个子节点进行深搜,非常暴力,毫无疑问TLE。在此情况下,直觉告诉我需要增加一维空间来降低时间复杂度。此时,设dp[i][j]表示用 i 个节点,孩子节点数恰好为 j 的方案数,那么,状态转移方程为:

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std; #define N 205
#define M 25
#define MOD 1000000007 typedef long long LL; LL dp[N][M]; int main()
{
int t, n, k;
cin >> t;
while(t--)
{
cin >> n >> k;
memset(dp, , sizeof dp);
dp[][] = ; dp[][] = ;
for(int i = ; i <= n; i++)
{
dp[i][] = dp[i-][];
for(int j = ; j <= k; j++)
{
if(j >= i) break;
for(int p = ; p < i-; p++)
{
dp[i][j] = (dp[i][j] + dp[i-p][j-] * dp[p][]) % MOD;
}
}
for(int j = ; j <= k; j++)
dp[i][] = (dp[i][] + dp[i][j]) % MOD;
}
cout << dp[n][] << endl;
}
return ;
}

CSU 1351 Tree Counting的更多相关文章

  1. csuoj 1351: Tree Counting

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

  2. COJ 1351 Tree Counting 动态规划

    题目大意是: 给定一个n,k,表示树上共有n个节点,每个节点最多有k个叶子,问一共多少种摆法,答案对1000000007取模 这里定义一个dp[i]表示 i 个节点对应有多少种方法 f[i][j] 表 ...

  3. CSU 1663: Tree(树链剖分)

    1663: Tree Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 26  Solved: 11 [Submit][id=1663"> ...

  4. CSU 1811: Tree Intersection(线段树启发式合并||map启发式合并)

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1811 题意:给出一棵树,每一个结点有一个颜色,然后依次删除树边,问每次删除树边之后,分开的两个 ...

  5. 【树状数组】CSU 1811 Tree Intersection (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1811 题目大意: 一棵树,N(2<=N<=105)个节点,每个节点有一种颜 ...

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

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

  7. CSU 1811 Tree Intersection

    莫队算法,$dfs$序. 题目要求计算将每一条边删除之后分成的两棵树的颜色的交集中元素个数. 例如删除$u->v$,我们只需知道以$v$为$root$的子树中有多少种不同的颜色(记为$qq$), ...

  8. 常规DP专题练习

    POJ2279 Mr. Young's Picture Permutations 题意 Language:Default Mr. Young's Picture Permutations Time L ...

  9. [微软官网]One Windows Kernel

    One Windows Kernel https://techcommunity.microsoft.com/t5/Windows-Kernel-Internals/One-Windows-Kerne ...

随机推荐

  1. 温习classList api

    有道题是一个removeClass的功能,代码里是正则分隔了传入的name,根据name的个数,循环移除掉,让寻找bug..看了了这几行代码,首先想到的是我会如何去优化. 如果看代码一两分钟就能找到公 ...

  2. 【bzoj3173】最长上升子序列

    Portal --> bzoj3173 Solution 感觉自己需要智力康复qwq 首先题目给的这个序列肯定是一个\(1-n\)的排列,并且插入的顺序是从小到大 仔细思考一下会发现如果知道了最 ...

  3. SVN Server 500 NotLicensed 错误的解决方法

    SVN Server 500 NotLicensed 错误的HTML页面显示 Not licensed The server encountered an internal error or misc ...

  4. intellij 插件结构(文件结构以及概念层面上的结构)

    1.插件内的文件 2.插件类加载器 3.插件组件(component) 4.插件的扩展以及扩展点(Extensions.Extension Points) 5.插件的Action 6.插件的Servi ...

  5. iOS APNs实战分享

    序言: 因为App的功能需要,最近一直在调研苹果的APNs推送,开始时觉得超麻烦,现在感觉还是比较easy,“难者不会,会者不难”,自己踩过了这么多的坑终于会了,不出来吐槽(装X)一下对不起自己,23 ...

  6. array_intersect

    <?php date_default_timezone_set('Asia/Shanghai'); $a1=array("a"=>"red",&qu ...

  7. Resharper报“Possible multiple enumeration of IEnumerable”

    问题描述:在IEnumerable使用时显示警告 分析:如果对IEnumerable多次读取操作,会有因数据源改变导致前后两次枚举项不固定的风险,最突出例子是读取数据库的时候,第二次foreach时恰 ...

  8. [吴恩达机器学习笔记]12支持向量机6SVM总结

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 12.6SVM总结 推荐使用成熟的软件包 用以解决 SVM 最优化问题的软件很复杂,且已经有研究者做了很多年数值优化.因此强烈 ...

  9. centos7 nginx开启启动

    centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...

  10. Gogent相关问题的解决(不断更新)

    1:今天早上打开推特,发现进不去了,google浏览器一直提示404……找不到网址,真心郁闷.后来,查了查,才知道,最近google在北京的主干服务器被xx了,某些省就上不了了…… ……乱七八糟的不说 ...