区间dp
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
HDU 2513 Cake slicing(暴力记忆化搜索)
传送门没有什么技巧,就是记忆化搜索每次枚举是横着切割还是竖着切割且定义f[l1][r1][l2][r2]f[l1][r1][l2][r2]f[l1][r1][l2][r2]为左上角[l1,r1][l1,r1][l1,r1]右下角[r1,r2][r1,r2][r1,r2]的矩阵的最优切割方式#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>usin原创 2020-11-17 22:13:47 · 237 阅读 · 0 评论 -
HDU5693 D Game(经典套路区间dp)
传送门aaaaaaaaaaa定义f[l][r]f[l][r]f[l][r]为区间[l,r][l,r][l,r]最多消除几个数字Ⅰ.首先可以分割为两个区间转移f[l][r]=f[l][k]+f[k+1][r]f[l][r]=f[l][k]+f[k+1][r]f[l][r]=f[l][k]+f[k+1][r]Ⅱ.若[l+1,r−1][l+1,r-1][l+1,r−1]消除干净了,且a[l]a[l]a[l]和a[r]a[r]a[r]等差f[l][r]=r−l+1f[l][r]=r-l+1f[l][r]=原创 2020-11-17 20:35:35 · 246 阅读 · 0 评论 -
CodeForces149D Coloring Brackets(经典记忆化区间dp)
传送门给你一个完全匹配的括号串。然后让你给这些括号染色:①每个括号可以不染色或者染成红色或者染成蓝色。②按照栈匹配的方式去匹配的一对括号,有且只能有一个括号染色。③对于任意两个相邻的括号来讲,不能同时染色、但是可以同时不染色。首先发现一个左括号染色情况和对应的右括号有关系所以预处理一个nxt[i]nxt[i]nxt[i]表示与iii匹配的括号在nxt[i]nxt[i]nxt[i]位置定义f[l][r][c1][c2]f[l][r][c1][c2]f[l][r][c1][c2]为区间[l,r]原创 2020-11-17 19:38:28 · 293 阅读 · 0 评论 -
HDU 6212 Zuma(好难啊经典区间dp)
传送门定义f[i][j]f[i][j]f[i][j]为消除[i,j][i,j][i,j]的最小花费如果a[i]a[i]a[i]和a[j]a[j]a[j]同色,那么可以消除中间再消两边f[i][j]=f[i+1][j−1]+(消除ai,aj的代价)f[i][j]=f[i+1][j-1]+(消除a_i,a_j的代价)f[i][j]=f[i+1][j−1]+(消除ai,aj的代价)也可以采用分段消除枚举分割点kkkf[i][j]=f[i][k]+f[k+1][j]f[i][j]=f[i][k]+f[原创 2020-11-17 10:57:21 · 229 阅读 · 0 评论 -
HDU 5900 QSC and Master(稍有技巧的区间dp)
传送门一眼绝对像区间dpdpdp定义f[i][j]f[i][j]f[i][j]为区间[i,j][i,j][i,j]的最大收益可以枚举一个kkk转移f[i][k]+f[k+1][j]f[i][k]+f[k+1][j]f[i][k]+f[k+1][j]而当a[i]a[i]a[i]和a[j]a[j]a[j]不互质时也可能可以消除但是状态并没有说明[i+1,j−1][i+1,j-1][i+1,j−1]是否被取空但是!!如果f[i+1][j−1]f[i+1][j-1]f[i+1][j−1]等于[i+1,j原创 2020-11-16 22:37:10 · 211 阅读 · 0 评论 -
HDU5396 Expression(经典区间dp+组合数学)
传送门定义f[i][j]f[i][j]f[i][j]为区间[i,j][i,j][i,j]所有方案数的和如何由小区间递推f[i][j]?f[i][j]?f[i][j]?考虑枚举最后合并[i,j][i,j][i,j]的运算符kkk若kkk位置是乘法设[i,k][i,k][i,k]的不同方案数结果是a1,a2...axa_1,a_2...a_xa1,a2...ax设[k+1,j][k+1,j][k+1,j]的不同方案数的结果是b1,b2...byb_1,b_2...b_yb1,b2...by原创 2020-11-16 21:25:16 · 261 阅读 · 0 评论 -
HDU5273 Dylans loves sequence(树状数组或区间dp)
传送门给一个长度nnn的序列aaa有qqq次询问,每次询问给一个区间[l,r][l,r][l,r]求有多少对(x,y)(x,y)(x,y)满足l<=x<y<=rl<=x<y<=rl<=x<y<=r且a[x]>a[y]a[x]>a[y]a[x]>a[y]把数字离散化,于是可以枚举区间从区间[l,r][l,r][l,r]到[l,r+1][l,r+1][l,r+1]只需要考虑a[r+1]a[r+1]a[r+1]的贡献也就是在[l原创 2020-11-16 19:55:37 · 253 阅读 · 0 评论 -
HDU 4597 Play Game (简单博弈记忆化搜索 )
传送门定义f[l][r][q][w]f[l][r][q][w]f[l][r][q][w]为在第一堆前面拿了lll个,在后面拿了rrr个在第二堆前面拿了qqq个,在后面拿了www个,目前人的期望收益若从第一堆前面拿,转移是,其中sumnsumnsumn是目前还剩下的石子sumn−f[l+1][r][q][w]sumn-f[l+1][r][q][w]sumn−f[l+1][r][q][w]若从第一堆后面拿,转移是sumn−f[l][r+1][q][w]sumn-f[l][r+1][q][w]sumn原创 2020-11-16 18:37:24 · 277 阅读 · 0 评论 -
牛客 合并回文子串(区间dp)
牛客传送门不管怎么合并,最后的答案一定是由aaa串连续的一段和bbb串连续段一段拼起来的那么定义f[i][ii][j][jj]f[i][ii][j][jj]f[i][ii][j][jj]为取aaa串的[i,ii][i,ii][i,ii]和bbb串的[j,jj][j,jj][j,jj]是否可能构成回文那么显然可以通过在两端加字母达成目的最明显的两种方式 if( l1>=2 ) f[i][ii][j][jj] |= f[i+1][ii-1][j][jj]*( a[i]==a[ii] );原创 2020-11-12 10:02:49 · 315 阅读 · 0 评论 -
HDU 4745 Two Rabbits(模型转换最长回文子序列)
传送门啊两只兔子在一个环形石子上,一个顺时针跳,一个逆时针跳都不能跳超过一圈.问,若保证两只兔子每一步都相同,最多跳几步?思路首先断环为链发现如果满足跳的每一步都相同如果一个兔子跳的是回文串,那么另一只兔子只需要逆着跳回去就好了如果不是回文串,只能是最后一个数字不回文,这样另一个兔子可以从这个点开始跳…这样就可以求最长回文子序列了显然有f[i][j]=max(f[i+1][j],f[i][j−1])f[i][j]=max(f[i+1][j],f[i][j-1])f[i][j]=max(原创 2020-11-12 09:14:46 · 254 阅读 · 0 评论 -
金字塔(隐藏的区间dp)
传送门一棵树每个节点用一个字母表示已知dfsdfsdfs序,求树的可能结构害,本来想到了区间dpdpdp,冲动了啊定义dp[l][r]dp[l][r]dp[l][r]表示根为lll的合法树的数目dp[l][r]+=dp[l+1][r−1]dp[l][r]+=dp[l+1][r-1]dp[l][r]+=dp[l+1][r−1]此时要求a[l]==a[r]a[l]==a[r]a[l]==a[r],意思是在原来树的根上再加一个节点然后枚举一个kkk使得a[l]==a[k]==a[r]a[l]==a原创 2020-11-06 16:18:02 · 252 阅读 · 0 评论 -
UVA Live Archive 4394 String painter(区间dp)
VJ传送门感觉非常厉害…先考虑白板刷到串BBB的最小花费首先dp[i][j]=dp[i+1][j]+1dp[i][j]=dp[i+1][j]+1dp[i][j]=dp[i+1][j]+1这是单独刷iii位置但是也可以在刷kkk的时候顺便刷掉iii此时当b[i]==b[k]b[i]==b[k]b[i]==b[k]有转移dp[i][j]=dp[i+1][k]+1+dp[k+1][j]dp[i][j]=dp[i+1][k]+1+dp[k+1][j]dp[i][j]=dp[i+1][k]+1+dp[k原创 2020-11-01 22:22:13 · 209 阅读 · 0 评论 -
You Are the One(区间dp)
VJ传送门n个人参加节目,每人都有一个屌丝值D如果他第k个上场,那么他的不高兴值为(k−1)∗D(k-1)*D(k−1)∗D,因为他要等k−1k-1k−1个人。节目有个小黑屋(是个栈,满足栈的性质)完全想不到是区间dpdpdp定义dp[i][j]dp[i][j]dp[i][j]为区间[i,j][i,j][i,j] 的人都出场的最小花费那么第iii个人可以在第一个位置出场,第二个位置出场…第j−i+1j-i+1j−i+1个位置出场假设现在枚举到第iii个人在第kkk个出场那么一定是[i+1,原创 2020-11-01 15:37:59 · 334 阅读 · 0 评论