DP
文章平均质量分 77
文竹balala
听见麒麟臂了吗
展开
-
Zoj3201 Tree of Tree 树形DP
题目大意:从一棵树上选取k个节点的子树使节点权值之和最大思路: 想到是树形DP了但是一直推不出来状态状态转移方程,首先是自己状态如何表示都没想好刚开始时用状态f[u][k][0]和f[u][k][1]表示以节点u父亲节点选k个节点0表示不选u,1表示选u,如果选u的话u的儿子至少要选一个,不选的话儿子可选可不选,然后想想这样下边计算时就会越来越乱~~~然后看了别人的思路:f[u][原创 2015-08-21 19:05:11 · 573 阅读 · 0 评论 -
POJ 2096 概率DP
题意: 一个软件有s个子系统,n种bug,一个人每天可以发现一个bug 求发现n种bug且每个子系统至少有一个bug的期望(也就是平均天数)分析:这是我的第一道概率DP问题,看了网上题解后才会做,这里使用逆着递推 我感觉顺着递推应该也能做,但是没有尝试。 dp[i][j]表示已经找到i种bug,j个系统的bug,达到目标状态的天数的期望原创 2016-02-14 22:38:23 · 389 阅读 · 0 评论 -
poj2955 区间DP
题意:求一个字符串最多有多少个字符括号可以相互匹配分析:很容易想到dp,状态f[i][j]表示i到j最多可以匹配的字符数状态转移方程:即要么给i从后边匹配一个字符串,要么不匹配i直接与f[i+1][j]相比较if (a[i] == a[k]) f[i][j] = max(f[i][j], f[i+1][k-1] + f[k+1][j] + 2);else dp[i][j]原创 2016-02-12 16:16:41 · 367 阅读 · 0 评论 -
hdu5179 数位DP
题意:[l, r]中满足任意高位大于低位且高位%低位等于0的个数。分析: 1、本题可以用传统的dfs来做,唯一需要注意的是需要增加一个标记z来记录前边是否一直是0,如果是的话就可以把它记忆化。2、本题当然还可以用预处理加递推来做,dp[i][j]表示i位最高位为j的符合条件的个数则dp[i][j] = dp[i-1][k]其中j>=k&&j%k=0;现在终于感觉到递推的神奇的方面了,真原创 2015-09-04 09:21:21 · 2749 阅读 · 0 评论 -
hdu5568 sequence2 dp+大数
题意:给n和m,和 n个数求n个数中有多少个不同的长度为m的数列且严格递增分析: 题意很容易理解,也很容易想到dp,dp[i][k] += sum(dp[j][k-1]),其中ja[j];但是对本题来讲很容易WA,搜了题解才知道要用大数然后就是开始了我写大数的悲催之路,也可能是受网上的代码的影响,自己写出来的大数四不像,改了好久才发现错误个人感觉写简单的大数具体思路看代码.原创 2015-12-20 08:56:44 · 465 阅读 · 0 评论 -
poj185 炮兵阵地 状压DP
题目链接:http://poj.org/problem?id=1185题意:在一个N*M的矩阵上最多能放多少门大炮,大炮只能放在平原上,且保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内(横向纵向两个格子)。思路:1、这是经典的状态压缩题,由于当前第i行的状态不仅和第i-1行有关,还和第i-2行有关,所以要开一个三维的数组同时记录当前行和上一行的原创 2015-08-22 21:53:13 · 345 阅读 · 0 评论 -
poj3254 Corn Fields 状压DP入门
#include#include#include#include#include#includeusing namespace std;const int maxn = (1<<13) + 5;const int INF = 0x7f7f7f7f;const int mode = 100000000;int a[maxn], b[maxn];long long f[12][原创 2015-08-21 22:38:48 · 355 阅读 · 0 评论 -
hdu4389 Xmod f(x) 数位DP
题意:求区间[a, b]之间有多少个数是xmode(x各位数)之和为0.分析:发现自己数位DP好弱,不仅参考别人思路,而且自己敲代码还WA到吐血,归根到底是自己还没有 理解这道题的具体思路 1、这道题有人打表过了每隔10W算出来一个数值,开个数组记录下来,最后会很容易计算出来2、发现自己预处理+递推还是不会做,看题解也看不懂3、每个数各位数之和为1~81,所以可以枚举mode,df原创 2015-09-03 15:01:09 · 402 阅读 · 0 评论 -
hdu2089||hdu3555简单数位DP
题意:给一个闭区间[m, n]输出该区间内有多少个数不含62和4.分析: 由于刚学习数位DP这方面的题,这道题算是 一个入门题了,对这类与数类有关的区间统计问题,在网上看到了好几种方法1,、可以先预处理,然后再递推得出答案,用F[i, st]表示位数为i状态为st的方案数。2、可以通过dfs记忆化搜索来做,通过最高位到最低位,枚举第i位可以存在的状态最后再相加就可以了,感觉这种方法容易原创 2015-09-02 23:57:45 · 340 阅读 · 0 评论 -
poj3311 TSP问题 状压DP
题意:从0走遍1~n最后再返回到0,一个点可以走多次,求经过的最短距离。分析:由于一个点可以走多次,所以需要求出任意两点间的最短距离,就要用到floyd算法,同时接下来可以搜索做复杂度是O(n!),而状态压缩的时间效率就高了,关于DP自己有时候状态转移方程知道了,却不知道如何去实现,循环时哪层放在外面,哪层放在里面,所以很容易把DP写成了暴力的搜索,自己要多想想。状态转移方程:dp[S][原创 2015-08-30 16:33:54 · 533 阅读 · 0 评论 -
hdu4035 概率DP求期望
题意:有一个迷宫有n个房间,n-1条边,每个房间都有一定的概率掉进陷阱(概率为ki)或者逃出迷宫(概率为ei),在每个房间进入任何一个相邻的房间的概率是相等的,开始时在1号房间,每次掉进陷阱后会从1号房间从新开始,求逃出迷宫走的边的期望,如果不肯能则输出impossible。分析:这是一道概率dp,但是一直想不出来状态和状态转移方程,还是看了kuangbin大神的题解,发现二维状态行不原创 2016-02-17 11:47:39 · 650 阅读 · 0 评论