
DP
文章平均质量分 78
ThinkingLion
这个作者很懒,什么都没留下…
展开
-
hdu 4561
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4561可以用dp的思想来解决。用一个二维数组dp[2][n]来表示,其中,dp[0][i]代表i之前最长乘积为负数的元素的个数,dp[1][i]代表i之前最长乘积为正数的元素的个数具体canka原创 2015-01-29 17:09:45 · 405 阅读 · 0 评论 -
poj_1080
源地址:http://poj.org/problem?id=1080又是一道dp的题目,做dp没感觉啊。。- -这是一道字符匹配的dp,感觉和最长公共子序列有点像.最长公共子序列:if(s[i]==s2[j]) dp[i][j] = dp[i-1][j-1]+1else dp[i][j] = Max(dp[i-1][j],dp[i][j-1])而对于这道题目,字母还可以 ’转载 2015-03-22 14:03:23 · 363 阅读 · 0 评论 -
poj_1159
源地址:http://poj.org/problem?id=1159题目大意就是在原字符串中加入最少的字母,使得整个字符串变成回文串。。其实这个很基础的。。。。我们将i从尾循环到头,j从i到尾,对于i,j如果ch[i]==ch[j],那么 dp[i][j] = dp[i+1][j-1] 否则的话 dp[i][j] = Min(dp[i+1][j],dp[i][j-1])+1不过要注原创 2015-03-22 14:50:10 · 336 阅读 · 0 评论 -
poj_1260
源地址:http://poj.org/problem?id=1260题目大意不好说,比较复杂。百度下就能找到。动态规划的思想,用一个dp[i]代表买前i种珍珠所用的价格。我们知道,如果好几种珍珠要合起来买的话,那么它们一定是连在一起的(即i,i+1,i+2....),假设第i种珍珠和第i+2种一起买,那么肯定不如和i+1种一起,因为i+1种的价格肯定比i+2种便宜。那么在买第i种珍珠时原创 2015-03-21 15:22:08 · 293 阅读 · 0 评论 -
poj_1836
源地址:http://poj.org/problem?id=1836题目大意就是从一排身高迥异的士兵中剔除最少的人,使得队伍的样子如同如下这幅图:用LIS就行。先从头来一遍,再从末尾来一遍,最后枚举红蓝两个点,找出最长的不降子序列,也就是剔除的人最少。#include#include#include#include#include#include#include原创 2015-03-21 12:58:14 · 402 阅读 · 0 评论 -
poj_3176
源地址:http://poj.org/problem?id=3176题目大意就是一个三角形,从顶部选一条路到低端,使得这条经过的路上的权值和最大,路只能是从上一层的j到下一层的j和j+1。经典的dp,从底往上走一遍就行。#include#include#include#include#include#include#include#include#include#in原创 2015-03-21 15:31:07 · 331 阅读 · 0 评论 -
poj_3267
源地址:http://poj.org/problem?id=3267题目大意就是给你一个单词s,然后给出一本字典,问你在原单词中最少删去多少个单词才能使其在字典中能查得到。dp,我们用dp[i]来代表从i到L(原单词的长度)要删的最少的单词数。我们从最后往前进行dp,最坏的情况就是对于每一个i,dp[i]=dp[i+1]+1,而对于一个i,我们假设s[i]等于字典中某个单词的首字母,并原创 2015-03-21 10:28:23 · 352 阅读 · 0 评论 -
poj_1276
源地址:http://poj.org/problem?id=1276题目大意就是有cash这么多的现金,然后有n种面值的钱,问用这n种面值的钱,最多能够凑成不超过cash这么多的现金。一看就是一道多重背包的裸题,用下多重背包的公式就好~#include#include#include#include#include#include#include#include#inc原创 2015-03-20 16:35:23 · 288 阅读 · 0 评论 -
poj_1837
源地址:http://poj.org/problem?id=1837刷到了自己最弱的Dp专题了。。啥都不会啊。。看了题解才知道,这是一道背包问题。用dp[i][j]来表示前i个物品达到平衡度为j时的方法数量,那么dp[i][j] = dp[i][j]+dp[i-1][j+w[i]*c[k]],就是说,如果前i-1个物品达到j+w[i]*c[k]时有dp[i-1][j+w[i]*c[k]原创 2015-03-20 15:42:22 · 291 阅读 · 0 评论 -
poj_2151
源地址:http://poj.org/problem?id=2151。。这是道概率DP的问题。。好像放错分类了。。我们首先用一个f[i][j]来表示第i个人做对第j题的概率,也就是题目中的输入。然后用g[i][j][k]来表示第i个人在前j题中做对k题的概率,很明显的,g[i][0][0]=1,g[i][j][0] = g[i][j-1][0]*(1-f[i][j]),而对于每一个k,原创 2015-03-14 13:03:43 · 341 阅读 · 0 评论