dp
Counting__Stars
这个作者很懒,什么都没留下…
展开
-
CDOEVS 2980 买帽子
这个题和我在初赛时做的一个题比较像,那是个读程序写结果的题,然后我就提取了它的思想做了一下。还是dp,用二维数组f[i][j]表示字符串起点为i,终点为j的系数,当字符串st[i-1]和st[j-1](字符串起点为0)相等时f[i][j]=f[i+1][j-1]+2,不然就赋值为f[i][j-1]和f[i+1][j]里的最大值,即求最长对称子序列。全都求出来之后排一下序就行了。#include<c原创 2016-11-07 07:06:30 · 245 阅读 · 0 评论 -
CODEVS 3012 线段覆盖 4
题意:每个线段有左端点,右端点和积分,找出互不覆盖的线段的积分和的最大值。 和线段覆盖2唯一的区别就在于数据范围变大了,至于它的空间限制缩小对用dp做这个题并没有什么影响。 先说下线段覆盖2的做法:按左右端点排序都可以(线段覆盖4需要按右端点排序,这里按右端点从小到大排序来讲),第一层循环从左到右枚举每个点,第二层循环去枚举右端点比它小的点,找出右端点小于等于它的左端点且dp值最大的点,用它来求原创 2016-11-07 17:41:34 · 527 阅读 · 0 评论 -
CODEVS 1380 没有上司的舞会
题意:在一棵树上每个点都有价值,在这些点里找出一些互不相连的点并使其价值之和最大。 标签是树形dp,于是我第一次就尝试着用dp做,然而在读入的时候这个题挖了个坑,读入a,b,b是a的上司,然而我二话没说就把a当做了b的上司,结果就做不出来了。然后第二次我就“think diffierent”,用了一种贪心+bfs的做法,一扫题解里树形dp的乌烟瘴气,而且速度也不慢,虽然这时候我在读入的坑里,但这个原创 2016-11-08 19:39:50 · 525 阅读 · 0 评论 -
CODEVS 1958 刺激
回想起来这道题还是当初牛犇犇教我们深搜的时候让我们做的题,现在来看,深搜来做这个题还是比较简单的,在dfs的时候注意一下方向的转移就行了,现在我要用dp来做这个题。 棋盘型dp,想一下状态,一个位置,有两个状态:向下走来的(海拔),向上走来的。那么我们就可以开一个三维数组,记录每个状态的最长路径的长度。那每个状态的来源为上方(坐标)向下走(海拔),上方向上走,左方向上走,左方向下走。另外这些状态能原创 2016-11-11 23:13:10 · 248 阅读 · 0 评论 -
CODEVS 2853 方格游戏
今天早上去做传说中的棋盘dp三兄弟:方格取数,传纸条,方格游戏。前两个虽说属于不同年份的noip提高组,结果除了读入优化其余全部一样,第三题意变化不大,但数据范围变成了n<=100,再和前两个一样任性地开四维并且用四重for循环就不行了,我们需要优化一下。 我认为dp相对于搜索要快在于它记录了搜索的一些值,不再需要重复求解,而dp相对于记忆化搜索要快在于dp比它多了高效的顺序,从子结构到总结构,保原创 2016-11-09 14:35:40 · 528 阅读 · 0 评论 -
CODEVS 4560 子串
这也许是我发的最后一篇博文了,,,就来说一下上一次考试里纠结了我2个小时最后零分的子串吧。 题目描述:在a串里找出k份使得按原顺序连接起来成为b串,求方案数。 这是一个比较难的dp问题,我觉得像是最长公共子序列的加强版,首先可以想到用两维表示a串和b串分别匹配到的位置,再用一维表示k份,之后在想状态的时候发现这样并不能进行状态的转移,因为无法进行份数的分配,直接进行状态转移会有重合,所以要再加一原创 2016-11-16 09:03:15 · 322 阅读 · 0 评论 -
CODEVS 2800 送外卖
题目描述:从0号点出发,经过1-n点,不要求顺序,而且每个点可以走多次,最后回到0点,求最短时间。 因为要走遍1-n点,那么直接最短路是不行的,不保证没有环,所以dfs时间会多一些,而且这里dfs不好剪枝,那么就可以考虑一下dp,状态就是到某个点,走过了一些点,所用的最短时间,那么就要记录走过了哪些点,用bool数组存并不好,因为dp数组要开二维,而且判断哪些点走过时还要去枚举每个点去判断,既费时原创 2016-11-12 10:16:08 · 607 阅读 · 0 评论