计数dp
文章平均质量分 58
WA是一笔财富
这个作者很懒,什么都没留下…
展开
-
51nod 1603 限高二叉排列树 计数dp
传送门:51nod1603 题意:求有n个节点且高度不低于h的二叉树有多少种形态。 思路:dp[n][h]表示有n个节点且高度 拓展:一个n个节点的二叉树的所有形态数就是卡特兰数。卡特兰数应用。 代码: #include #define ll long long #define inf 0x3f3f3f3f using namespace std; typedef pair P; con原创 2017-08-25 23:20:56 · 232 阅读 · 2 评论 -
HDU 6155 Subsequence Count dp + 矩阵+ 线段树
传送门:HDU6155 题意:给出一个长度为n的01串和两种操作: 1.将区间[L, R]翻转(0变1,1变0) 2.计算区间[L, R]的不同的子序列的个数 思路:一开始以为算子串数量,对着题解怼了半天没看懂。。 叉姐的题解: 来自:ICPCCamp 里面帖子的回复中有对转移方程为什么不会重复计数的解释。然后就是如何用线段树去维护:详细讲解 但是我看了很多的博客都没有讲解为什么原创 2017-08-23 20:06:46 · 278 阅读 · 0 评论 -
HDU - 5863 cjj's string game 矩阵快速幂优化DP
传送门:HDU5863 题意:有k种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共子串长度恰为m,问方案数 思路:完全来自:点击打开链接 dp[i][j] := 构造出长度为i的子串并且最后j个字符匹配的方案数。 dp[i][j] = dp[i-1][j-1]*k. dp[i][0] = ∑(dp[i-1][j]*(k-1)*k)原创 2017-09-08 17:47:13 · 233 阅读 · 0 评论 -
HDU - 5791 Two 简单计数dp
传送门:HDU 5791 题意:统计两个序列的所有相同子序列的个数。 思路:dp[i][j]代表第一个序列到i位置,第二个序列到j位置的所有相同子序列个数。 则转移方程为:dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + (dp[i - 1][j - 1] + 1) * (a[i] == b[j]) 代码: #inc原创 2017-09-03 14:15:00 · 242 阅读 · 0 评论