线性dp
!
fffefw
这个作者很懒,什么都没留下…
展开
-
Purple Rain Gym - 101652S (dp)
这题和hdu1003很相似,都是求的是区间的最大值,以及对应的区间,只不过这里的区间的值由R的数量和B的数量的差的绝对值决定,我一开始用的是统计区间的abs(numr-numb)来维护一个区间的值,但是最后写出来样例1没过,然后又换了种思路,我们要求的那个区间不是numr大于numb就是numb大于numr,对于第一种情况把r当作1,b当作-1,然后就用hdu1003的方法做,求出1到n区间的最大...原创 2018-08-18 16:51:14 · 546 阅读 · 0 评论 -
hdu 1003
题目大意就是给你一个区间,要你求区间的最大和,以及对应的起点和终点。这题是简单的dp,状态定义的话就是dp[i]表示以a[i]结尾的区间的最大和,并且用qj[i]表示对应的区间的起点和终点,边界的话注意一下,dp【0】要初始化为0,因为0前面根本不存在元素,状态转移:dp[i]=max(dp[i-1]+a[i],a[i]),表示的是以a[i]结尾的区间的最大和可能是接由i-1位置的最大区间和转...原创 2018-08-16 23:49:50 · 316 阅读 · 0 评论 -
CodeForces - 1084C The Fair Nut and String(DP)
题目意思就是给你一个字符串,然后要问你一种子序列的种数有多少?然后这种子序列的定义是这样的:子序列是递增的字符串s下标,然后对于子序列里的每个下标,要求该下标对应的s里的字符是'a',然后要求子序列里每一个下标和它后面的一个下标之间存在一个下标j,s[j]是‘b'. 思路:举几个例子就可以发现递推的规律,我们把s里连起来的’a'视为一块整体,'b'也一样 。1. 字符串s=a...a ...原创 2018-12-13 21:20:12 · 183 阅读 · 0 评论 -
Codeforces Round #533 (Div. 2) C. Ayoub and Lost Array
题意就是给你一个l和r,要你求一个长度为n的序列有多少种,该序列要满足序列和%3==0. 定义dp[i][j]为处理到第i个数,前i个数之和模3为j的方案数,设l到r模3为0,1,2的数个数分别为a,b,c 则有dp[i][0]=(dp[i-1][0]*a%mod+dp[i-1][1]*c%mod+dp[i-1][2]*b%mod)%mod; dp[i][1]=(d...原创 2019-01-25 00:18:57 · 207 阅读 · 0 评论 -
51nod 1007正整数分组(01背包变形)
题目大意就是给n个数,分2组,求2组和之差最小。 这题我一开始写的dfs结果t了,后面看了题解说是0背包变形才恍然大悟。第一种解法:先把n个数的和sum求出来,要使得2组数和之差尽可能小,必定是要使得一组逼近sum/2,于是从这里入手,我们就转而求从n个数选若干个数,在和<=sum/2的情况下和能取得的最大值,这个时候就很明显了,这里把一个数的大小同时作为该数字的价值和体积,dp[...原创 2019-01-27 15:13:13 · 149 阅读 · 0 评论 -
牛客练习赛41 B. 666RPG
题目大意就是给n个数,然后有n个回合,在第i个回合操作有2种,一种是对当前数*-1,第二种是对当前数+ai,问你n回合后数变成-666的操作方案数是多少?另外数的初始值是0,还有在一个合法的方案里,不能有某个回合结束后数变成了666 这题用的是计数dp,定义dp[i][j]表示第i个回合结束之后,数变成j的方案个数。初始化是dp[0][0]=1,其余为0。状态转移的话是dp[i][-j]...原创 2019-03-02 16:52:04 · 262 阅读 · 0 评论 -
P1417 烹调方案(01背包 )
写了这题后才算了解了一点01背包,01背包的第一重for循环原来影响的是对这n个物品的选择顺序,但是这n个物品的价值都是固定的,所以说无论你对i和j,是先选i再选j还是先选j再选i得到的总价值都是一样的,此时对这n个物品的选择顺序就无关紧要了,随便从哪个开始选都可以。首先这题一开始看到就很像01背包,美味度作价值,花费作体积,T作容量,但是有一点不同了,物品的价值会随着时间变化,是先选i再选j...原创 2019-08-13 21:23:53 · 151 阅读 · 0 评论 -
AtCoder Grand Contest 037 A - Dividing a String
题目意思是给一个字符串然后问你,最多可以分成多少块,要求相邻的2块不能相等。\mathbf 题目意思是给一个字符串然后问你,最多可以分成多少块,要求相邻的2块不能相等。题目意思是给一个字符串然后问你,最多可以分成多少块,要求相邻的2块不能相等。做法就是dp,因为大小为3的块必定是可以分成大小为1和2的两块的,通过这样子拆分可以知道大小>=3的块都是可以分成大小为1和2的块的合法组合的,且...原创 2019-08-24 20:04:09 · 369 阅读 · 0 评论