
区间DP
文章平均质量分 51
wwt9b15bs
这个作者很懒,什么都没留下…
展开
-
【题解】hrbust1818 石子合并 区间DP
题目链接 朴素算法就能过,求最大求最小都能做 一种是一本通的写法(枚举起点终点),还可以采用区间DP枚举区间长度 枚举点#include<cstdio>#include<cstring>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;int sum[110],f[110...原创 2018-08-15 07:10:55 · 190 阅读 · 0 评论 -
【题解】洛谷P1063[NOIP2006]能量项链 区间DP
题目链接区间DP。懒得打公式了。#include<cstdio>#include<algorithm>using namespace std;int n,a[220],dp[220][220];int main(){ //freopen("in.txt","r",stdin); scanf("%d",&n); for(int i...原创 2018-10-15 09:37:43 · 390 阅读 · 2 评论 -
【题解】洛谷P1026[NOIP2001]统计单词个数 区间DP+字符串
题目链接参考了大佬题解中string的基操#include<cstdio>#include<iostream>using namespace std;string str,ch,word[10];int p,k,s,sum[510][510],dp[510][50];bool Find(int l,int r){ string aim=str.sub...转载 2018-10-15 09:21:32 · 250 阅读 · 0 评论 -
【题解】CH5302 金字塔 区间DP+记忆化搜索
题目链接描述虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下。经过多年的研究,科学家对这座金字塔的内部结构已经有所了解。首先,金字塔由若干房间组成,房间之间连有通道。如果把房间看作节点,通道看作边的话,整个金字塔呈现一个有根树结构,节点的子树之间有序,金字塔有唯一的一个入口通向树根。并且,每个房间的墙壁都涂有若干种颜色的一种。探险队员打算进一步了解金字塔的结构,为此,他们...原创 2018-09-28 08:51:29 · 554 阅读 · 0 评论 -
【题解】洛谷P1880[NOI1995]石子合并 区间DP
题目链接设 mx[l,r]mx[l,r]mx[l,r] 表示区间 [l,r][l,r][l,r] 合并的最大得分,同理设 mn[l,r]mn[l,r]mn[l,r] 表示区间 [l,r][l,r][l,r] 合并得到的最小得分。mx[l,r]=maxl≤k&lt;r{mx[l,k]+mx[k+1,r]}+∑i=lraimx[l,r]=\max\limits_{l\leq k&am...原创 2018-10-12 17:28:42 · 401 阅读 · 0 评论 -
【题解】洛谷P1040[NOIP2003]加分二叉树 区间DP
题目链接#include<cstdio>typedef long long ll;int n,qx[40][40];ll f[50][50];void print(int l,int r){ if(l>r)return; printf("%d ",qx[l][r]); print(l,qx[l][r]-1);print(qx[l][r]+1,r);}i...原创 2018-10-05 19:54:46 · 226 阅读 · 0 评论 -
【题解】codeforces1058C[Codeforces Round #512 Div.2 C]C.Vasya and Golden Ticket 区间DP
DescriptionRecently Vasya found a golden ticket — a sequence which consists of nnn digits a1a2⋯an‾\overline{a_1a_2\cdots a_n}a1a2⋯an. Vasya considers a ticket to be lucky if it can be divided int...原创 2018-09-26 22:27:10 · 309 阅读 · 2 评论 -
【题解】洛谷P4342(poj1179)[IOI1998]Polygon 区间DP
题目链接题意翻译题目可能有些许修改,但大意一致多边形是一个玩家在一个有 nnn 个顶点的多边形上的游戏,如图所示,其中 n=4n=4n=4 。每个顶点用整数标记,每个边用符号 +++(加)或符号 ∗*∗(乘积)标记。第一步,删除其中一条边。随后每一步:选择一条边连接的两个顶点 V1V1V1 和 V2V2V2,用边上的运算符计算 V1V1V1 和 V2V2V2 得到的结果来替换这两个顶点。...原创 2018-09-26 17:25:11 · 303 阅读 · 0 评论 -
【题解】CH5301石子合并 区间DP
描述设有N堆沙子排成一排,其编号为1,2,3,…,N(N<=300)。每堆沙子有一定的数量,可以用一个整数来描述,现在要将这N堆沙子合并成为一堆,每次只能合并相邻的两堆,合并的代价为这两堆沙子的数量之和,合并后与这两堆沙子相邻的沙子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同,如有4堆沙子分别为 1 3 5 2 我们可以先合并1、2堆,代价为4,得到4 5 2 又合并...原创 2018-09-26 11:46:55 · 294 阅读 · 0 评论 -
【题解】hdu5115 区间DP
题目链接 dp[i][j]表示从i杀到j所受的最小伤害 dp[i][j]=min(dp[i][j],dp[i][k-1]+dp[k+1][j]+attack[k]+extre[i-1]+extre[j+1]) 吓到了贼NM难想//巨难想 #include&lt;cstdio&gt;#include&lt;algorithm&gt;#define INF 0x3f3f3f3fusi...原创 2018-08-17 07:22:35 · 289 阅读 · 0 评论 -
【题解】NYOJ746 区间DP
dp[i][j]表示前i位插入j个乘号乘积的最大值 dp[i][j]=max(dp[i]][j],dp[k][j-1]*num[k+1][i]) 其中num[i][j]表示从s[i]到s[j]这段连续区间代表的数值 学习处理num的方法#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;us...原创 2018-08-17 07:22:08 · 243 阅读 · 0 评论 -
【题解】hdu3506 区间DP
题目链接 环形石子合并。我们需要做的是尽量向简单的问题转化,可以把前n-1堆石子一个个移到第n个后面,那样环就变成了线,即现在有2*n-1堆石子需要合并,我们只要求下面的式子即可。求法与上面那题完全一样。 min(dp[s][s+n-1])s∈[1,n] 在这里采用四边形优化 用s[i][j]表示区间[i,j]中的最优分割点,那么第三重循环可以从[i,j-1)优化到【s[i][j-1],s...原创 2018-08-16 07:01:10 · 326 阅读 · 0 评论 -
【题解】poj2955 区间DP
题目链接 用dp[i][j]表示区间[i,j]里最大完全匹配数。 只要得到了dp[i][j],那么就可以得到dp[i-1][j+1] dp[i-1][j+1]=dp[i][j]+(s[i-1]与[j+1]匹配 ? 2 : 0) 然后利用状态转移方程更新一下区间最优解即可。 dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j])#include&lt;cs...原创 2018-08-16 07:01:03 · 155 阅读 · 0 评论 -
【题解】poj1738石子合并 区间DP 加西亚瓦克斯算法
题目链接 乍一看很激动(诶辣鸡题才做过)然后n=4e4+o(n^3)=GG GarsiaWachs算法 或者四边形优化(还是GG不用搞了)(以后自己写一遍) 还可以加上个平衡树(憋说了……) step 0:初始数组为num[1..n],num[0] = num[n+1] = INF step 1:每次找到一个最小的i使得num[i-1]&lt;=num[i+1],将num[i-1]和n...原创 2018-08-15 07:10:47 · 537 阅读 · 0 评论 -
【题解】hdu5693 D Game 区间DP
题目链接区间DP好题,把区间DP的基本操作都用上了。(状态转移方程很多,见代码吧)#include<cstdio>#include<algorithm>#include<cstring>#include<map>using namespace std;const int N=310;int t,n,m,a[N],d,dp[N][...原创 2018-10-17 08:31:59 · 242 阅读 · 0 评论