其他线性dp
文章平均质量分 54
Lazines_by
好吧,我要工作了
展开
-
UVA 11584
Partitioning by Palindromes题意: 在一个字符串中找到最少能组成几个回文串思路:dp[i]数组代表前i个字符组成的最少的回文串。递推式为:递推式:dp[i] = if(j+ 1 ~ i是回文)min(dp[j] + 1,dp[i]); j 判断回文的时候用一个k表示回文的中间变量,然后向两边延伸; 复杂度为(n ^ 2)#inclu原创 2017-03-31 14:32:46 · 199 阅读 · 0 评论 -
CodeForces 429B
题意:在一个n*m的矩阵中有两只虫子,一只从左上角向右下角移动,另外一只从左下角向右上角移动。要求:1.第一只虫子每次只能向左或者向下移动一格,另外一只只能向上或者向右移动一格。2.两只虫子的路径最多只能重合一点。3.求解两只虫子路径中除去重合那点其余各点的权值之和最大。思路:相当于分成四个部分去求各自到达交点的所得到的值,这样才能保证只经过原创 2017-04-04 19:05:20 · 345 阅读 · 0 评论 -
poj3616
https://vjudge.net/problem/16276/origin题意: 给一些区间,然后去区间权和的最大值,注意每个区间取完之后需要休息:#include#include#includeusing namespace std;const int maxn = 1000 + 10;#define INF 0x3f3f3f3f#define ep原创 2017-04-06 11:17:42 · 618 阅读 · 0 评论 -
codeforces 467C
题意:取出k个长度为m的区间,使得区间的和最大;思路:每次dp[j][i]表示当前点为j,取得区间为k的时候的最大值; 更新dp【j】【i】的每次都要在前m面找到当为k - 1个区间的最大值; maxs = max(maxs,dp[j - m][i - 1]);dp[j][i] = maxs + (sum[从j 往前数m个数的和])#incl原创 2017-05-23 20:30:51 · 486 阅读 · 0 评论 -
51Nod 1183
用dp随便搞一搞#include#include#include#include#include#include#includeusing namespace std;const int maxn = 5000 + 10;#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x )typedef long lon原创 2017-05-23 21:54:00 · 244 阅读 · 0 评论 -
hdu6024 简单dp
题意:在n个教学楼上建造糖果店,如果在那里建造,那么价值就是y,否则的话,就是他到左边第一个糖果店的距离。注意:如果某一个地方没有糖果店,那么他的左边一定有糖果店,所以第一个一定有糖果店。思路:每个地点分成两个状态,一个为这个点建造糖果店,即dp[i][0],一个为这个店不建造糖果店dp[i][1];当这个店建造糖果店的时候,dp[i][1] = min(dp[i - 1][0],原创 2017-05-09 11:27:45 · 618 阅读 · 0 评论 -
基础dp
问题 A: 谷神的赌博游戏时间限制: 1 Sec 内存限制: 16 MB提交: 414 解决: 112[提交][状态][讨论版]题目描述 NEUQ的谷神要和我赌一个游戏:谷神要求我随机在纸上写出整数集合{1,2,3,...,3n+1}(n是整数)的一个排列(即不重复的随机写出从1到3n+1的所有整数)。并且要求在我写的过程中,从我写的第一个数开始一直加到我原创 2017-06-13 17:02:05 · 355 阅读 · 0 评论 -
codeforces 825F (简单dp + KMP)
题意:给出一个字符串,你要把它尽量压缩成一个短的字符串,比如一个字符串ababab你可以转化成3ab,长度为 3,比如bbbacacb转化成3b2ac1b,长度为 7,aaaaaaaaaa转化为10a,长度为 3。思路:先n^2预处理出i,j之间的需要多少长度变成,然后简单状态转移一下。预处理的时候要运用到next数组的性质,即求一个字符串的最小循环的长度,如果len % (len原创 2017-10-01 18:00:49 · 803 阅读 · 0 评论