![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划——普通dp
文章平均质量分 74
普通网友
这个作者很懒,什么都没留下…
展开
-
hdu 1231
C - 最大连续子序列这题感觉不像dp(动态规划),但还是把它归入动态规划来了。题意中文,大家都能懂题目意思。解题思路:把前i-1个数加起来,如果它们的和大于等于0,那么是不是对后面的数值相加产生积极影响。反之,如果和小于0,因为我想要的是越大越好,若把前面的负值加上来,肯定会让我的值更小,所以前面这段就可以抛弃了,开始点就可以从i+1开始。原则:只要和 小于0,前面这段到原创 2013-11-15 17:28:24 · 447 阅读 · 0 评论 -
hdu 5087 Revenge of LIS II | dp 次长上升子序列
题意:找出次长shan原创 2014-11-02 20:26:39 · 508 阅读 · 0 评论 -
codeforces 479e Riding in a Lift | dp
题意:让你求出不能原创 2014-10-21 15:59:28 · 500 阅读 · 0 评论 -
CodeForces 219D Choosing Capital for Treeland | 树形dp
题意:有n个城市,它们之间有n-1条路,形成一棵树。原创 2014-09-09 16:27:06 · 1302 阅读 · 0 评论 -
codeforces 489e Hiking dp+01分数规划+二分
题意:一个人在起点0,有n个休息点,每个点有两个数值,分别表示距离起点的距离xi,以及所获得的愉悦值bi这个人打算每天走L距离,但实际情况不允许他这么做。定义总体失望值val = sum(sqrt(Ri - L)) / sum(bi); Ri:一天所走的距离。i为所到的节点。现在要使得val最小(这个人必须要到达最终的节点),让你找出相应的方案,即把所应走的休息点输出。原创 2014-12-13 23:09:49 · 1130 阅读 · 0 评论 -
codeforces 166e Tetrahedron 水dp
题意:略思路:定义dp[i][x]:走了i步,刚好走到x的种数。转移:把另外三个位置的种数累加到当前位置上。code:#include using namespace std;const int MAXN = 1e7+5;const int MOD = 1e9+7;int dp[MAXN][5];inline void add(int &a, int b) {原创 2015-02-19 21:49:40 · 667 阅读 · 0 评论 -
CodeForces 159D Palindrome pairs (回文子串、dp)
题意:[a,b] [x, y]为回文串,a思路:本来没什么思路的,重新做了一遍最长回文子串长度,有点想法。在求回文子串时,每当遇到一个子串是回文子串,就记录下这个回文串的左下标l和右下标r。并且用rec[i]记录以i作为左下标的回文串个数。枚举回文串,假设当前的回文串范围为[l, r],则加上左下标>=(r+1)的回文串个数。code:#includ原创 2015-02-19 22:37:02 · 510 阅读 · 0 评论 -
codeforces 189a Cut Ribbon 水dp
最近水了好多简单dp。。题意:略思路:定义dp[i]:长度为i的布,最多能分的块数。code:#include using namespace std;const int MAXN = 1e5+5;int n;int t[3];int dp[4005];int main() { cin>>n; for(int i = 0;i < 3; i++原创 2015-02-19 21:39:00 · 518 阅读 · 0 评论 -
codeforces 332b Maximum Absurdity dp
题意:有n个数,找两个段(每个段长度为k)不相交,求出这两个段的和的最大值。输出两个段的起始下标。思路:dp[i][j]:走到i,已经选了j个段的最大值。转移:dp[i][j] = dp[i-k][j-1] + sum[i]-sum[i-k];输出方案的话,根据dp的值dfs回去(不dfs也是可以的),因为方案已经记录在dp的转移中。code:#include #原创 2015-02-19 22:04:29 · 470 阅读 · 0 评论 -
CodeForces 349B Color the Fence (dp)
题意:给出1~9数字对应的费用以及一定的费用,让你输出所选的数字所能组合出的最大的数值。思路:dp一开始想歪了(sort并不对= =)。dp[i]:费用为i时,最大所能得到的数字个数。par[i]:记录当前i的状态是由前面哪个状态转移来的。path[i]:记录费用到i时,所选的数字。输出方案时,根据par数组从n往回跳,直到为0。途中把path中的数字记录个原创 2015-02-19 22:57:05 · 727 阅读 · 0 评论 -
Codeforces 527D Clique Problem (dp+树状数组+离散化)
题意:在x坐标轴上有n个不同的点,每个点位置为xi,点权为wi。若|xi - xj| ≥ wi + wj.该式子,则i和j点可以连一条边。现在让你找出一个最大的点集,使得集合内任意两点有一条边连着。输出最大点集内点的数量。思路:感谢杰哥提供的思路。dp:现有3个点,x1 若x1和x2有边相连,x2和x3有边相连。即d1 >= w1+w2;d2原创 2015-03-20 12:55:33 · 570 阅读 · 0 评论 -
Codeforces 540D Bad Luck Island 概率dp
题意:有r个石头,s个剪刀,p个布在一个岛上。问在足够长的时间里,石头,剪刀,布分别存活下来的概率。思路:感谢铭神指导!定义dp[i][j][k]:还剩下i个石头,s个剪刀,p个布的概率。初始dp[r][s][p] = 1;转移:总情况数:tol = i*j+j*k+i*k;则dp[i-1][j][k] = (i*k/tol)*dp[i][j][k];dp[原创 2015-05-03 21:54:42 · 740 阅读 · 0 评论 -
zstuoj 2857 3698 单调序列 dp、离散化
题意略思路杰哥提醒的dp,一开始想的就是dp,但状态就是定义不出来囧。状态定义:dp[i][j]:前i个数已经排好,第i个数是第j小的最小所需要改变的值。状态转移:dp[i][j] = min(dp[i-1][1...j]+abs(a[i]-b[j]));需要用到离散化,b数组就是保存离散化后的值,a数组是原来的值。2857数据比较弱(数组大小2005),369原创 2015-06-17 19:03:10 · 542 阅读 · 0 评论 -
hdu 5318 The Goddess Of The Moon 矩阵快速幂+dp
这题意也有够坑的。。题意:给你n(=2,则b串可以连在a串后面(注意,不用合并a,b串相同的位置)。每个串的个数都是无穷个,现在让你选m(11 111111 11*上面两个串并不相同,因此算两个。思路:注意字符串去重。还好m不会等于0。= =||先暴力求出每个串能转移的位置。a[i][j]为1,第j个字符串能连在第i个字符串后面;反之为0,则不能。原创 2015-07-28 21:13:57 · 792 阅读 · 1 评论 -
Codeforces 559C Gerald and Giant Chess (dp+组合数+逆元)
题意:从左上角走到右下角,每走一步只可以往下或者往右,其中有一些不可以走的点(黑点),问有多少种方案。思路:看了别人的blog,这不就是一个原题么。。。知道两个点,原来直接求组合数就可以得到它们的方案数,这个倒是才知道。http://blog.csdn.net/popoqqq/article/details/46121519引用自上面链接:首先把坏点和终点以x坐标为第一原创 2015-07-24 20:15:09 · 478 阅读 · 0 评论 -
hdu 4576 Robot | dp
题意:一个圆盘,有n个格。一开始原创 2014-11-02 13:42:29 · 441 阅读 · 0 评论 -
hdu 4784 Dinner Coming Soon | dp
最近自己真是越来越懒了啊。。。原创 2014-10-05 00:57:35 · 666 阅读 · 0 评论 -
Codeforces 474d Flowers | dp
看了题解才想到用dp。。。原来题意都已经理解错了。。。查题意:原创 2014-10-07 15:32:45 · 709 阅读 · 0 评论 -
UVA 11795 Mega Man's Mission | 状态压缩
基本是参考了http://blog.csdn.net/shuangde800/article/details/9733961原创 2014-07-18 08:48:08 · 335 阅读 · 0 评论 -
UVA 607 Scheduling Lectures | dp
参考文章:http://www.cnblogs.com/kedebug/archive/2012/11/25/2787453.html题意:原创 2014-07-22 20:34:33 · 367 阅读 · 0 评论 -
UVA 1424 Salesmen | dp
题意:给你一个原创 2014-07-15 00:56:53 · 384 阅读 · 0 评论 -
UVA 590 Always on the run | dp
来来回回看了三四次,最后原创 2014-07-22 21:13:42 · 389 阅读 · 0 评论 -
uva 10534 Wavio Sequence | dp
又是一道dp,又是在叶大神还有滔神的指导下才做出来。。。弱orz。题意:本质是最长不下降子序列。直接求解dp[i] = max(dp[i],dp[j]+1),j 1.....i;(TLE)Wavio Sequence:要求个数为奇数,并且遵循严格的递增和递减。思路:实际上,对于这题,只要正着一次求最长不下降子序列,再逆着求一次,答案基本出来。为什么要这样子做呢?因为Wavio Se原创 2014-03-21 19:22:37 · 474 阅读 · 0 评论 -
UVA 1291 Dance Dance Revolution | dp
对于dp,做了一定的题量之后就可以开始YY了。题意:一个原创 2014-07-23 08:59:42 · 415 阅读 · 0 评论 -
UVA 437 The Tower of Babylon | dp
题意:给你无限个原创 2014-07-23 09:28:36 · 366 阅读 · 0 评论 -
uva 11584 Partitioning by Palindromes | dp
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=465&page=show_problem&problem=2631算是刚开始认真做dp吧,觉得dp真的好神奇,而且在做之前的省赛题(浙江)时,总能发现一两道是dp。虽说这题是在看了别人的思路下写出来的,不过对我而言,还是益处很大的,写写博原创 2014-03-18 20:42:23 · 472 阅读 · 0 评论 -
LightOJ 1231 1232
只做了前两题,第三题貌似是多重背包,对dd原创 2014-07-15 00:40:51 · 589 阅读 · 0 评论 -
UVA 1252 Twenty Questions | dp_状态压缩
参考自:http://blog.csdn.net/shuangde800/article/details/9817593对于duiti原创 2014-07-21 19:15:32 · 502 阅读 · 1 评论 -
HDU 2196 Computer | 树形dp
题意:给你一棵树,让你原创 2014-09-09 15:57:43 · 419 阅读 · 0 评论 -
UVA 1292 Strategic game | dp_树形
本人的第一道树形dp。参考文章:http://blog.csdn.net/shuangde800/article/details/9786473原创 2014-07-23 09:08:48 · 418 阅读 · 0 评论 -
HDU 1520 Anniversary party | 树形dp
题意:邀请一些人作客,这些人原创 2014-09-09 15:41:04 · 388 阅读 · 0 评论 -
codeforces 461B Appleman and Tree
题意:给你一颗树,节点思路:AC代码:原创 2014-09-03 20:39:24 · 508 阅读 · 0 评论 -
codeforces 488D Strip 线段树+dp+二分
题意:给你n个数,把这n个数分了几块(piece),问你最后分得的最少块数。要求:1.每块长度>=L 2.每块的最大最小值的差值不得大于s思路:很容易想到了用dp,但O(n^2)明显会超时。查询区间最大最小值,自然想到线段树。因此。可以这样来实现:定义dp[i]:前i个数,分割的最小块数。转移:dp[i] = min(dp[j]+1);(i-j>=l)建两颗线段原创 2014-12-12 16:25:30 · 706 阅读 · 0 评论