ACM区间动态规划
桑榆207
在最终的结果到来之前,任何肯定会赢之类的话都是虚无缥缈的。
展开
-
Palindrome Partitioning - lightOJ 1044(区间dp划分字符串)
题意T组数据,每组数据输入一个字符串,问将其分为回文子串的最小数量题解dp[i]表示字符串中区间c[0]-c[i]分为回文子串的最小数量;显然dp[i]的初值赋为i+1,之后枚举区间的结束端点i和中间点j,如果区间j-i恰好为回文串,那么可以将这一段分为一个子串,也可以暂时不分,更新dp[i]=min(dp[i],dp[j]+1),最后输出dp[len]#include<...原创 2018-08-18 15:35:25 · 128 阅读 · 0 评论 -
区间dp(变环为链)
在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的...原创 2018-09-02 18:22:43 · 466 阅读 · 0 评论 -
区间dp入门(HDU 4745 Two Rabbits)
Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they planned to play a game with some stones. There were n stones on the ground and they were arranged as a cl...原创 2018-09-01 21:06:58 · 143 阅读 · 0 评论 -
8月29日总结
最近练区间dp,对区间dp认识更进一步,通常的情况就是区间长度+起点+断点。首先要做的事是预处理,初始化数组,给它特定的含义,给定的意义不同,初始化数组不同,状态转移方程不同。首先要确定状态如何转移,接着初始化数组,然后写状态转移方程,循环进行第一次的时候是以后的基础,逐层进行,最终得到整个区间内的最值。题目通常是在一个区间内定义,让求最值,做过的题要多思考几遍吧,加深一下印象。把做的题总结一...原创 2018-08-29 20:47:05 · 168 阅读 · 0 评论 -
一堆石子合并(变环为线区间dp)
在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. #include<iostream>#include<cstdio>#include<algorithm>#include<...原创 2018-08-31 21:34:06 · 141 阅读 · 0 评论 -
石子合并最大最小值(区间dp)
一条直线上摆放着一行共n堆的石子。现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请编辑计算出将n堆石子合并成一堆的最小得分和将n堆石子合并成一堆的最大得分 #include<stdio.h>#include<string.h>#include<iostream>using namespa...原创 2018-08-30 21:46:15 · 1542 阅读 · 1 评论 -
凸多边形三角划分(区间dp找状态转移方程)
给定一个具有N(N<=50)个顶点(从1到N编号)的凸多边形,每个顶点的权值已知。问如何把这个凸多边形划分成N-2个互不相交的三角形,使得这些三角形顶点的权值的乘积之和最小。dp[i][j]表示i-j的凸多边形划分后得到的最值;状态转移方程为dp[i][j]=dp[i][k]+dp[k][j]+a[i]*a[k]*a[j];#include <cstdio>#in...原创 2018-08-19 17:10:57 · 371 阅读 · 0 评论 -
整数划分(区间dp)
暑假来了,hrdv又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积输入第一行是一个整数T,表示有T组测试数据接下来T行,每行有两个正整数 n,m ( 1&...原创 2018-08-19 15:53:12 · 258 阅读 · 0 评论 -
POJ 2955-Brackets(括号匹配区间DP)
题目大意:给出一个的只有’(‘,’)’,’[‘,’]’四种括号组成的字符串,求最多有多少个括号满足匹配。 思路:用dp[i][j]表示区间i~j的最大匹配数,对于dp[i][j] = dp[i + 1][j - 1] + (s[i]和s[j]匹配?2 : 0),开始时dp[i][j]均为0。 代码如下:#include <cstdio>#include <iostre...原创 2018-08-19 10:57:29 · 174 阅读 · 0 评论 -
一堆石子合并(环形拆分为链区间dp)
在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.#include<cstdio> #include<cstring> #include<algorithm> #include<...原创 2018-08-18 21:52:51 · 299 阅读 · 0 评论 -
Generating Palindromes - lightOJ 1033(区间dp)
题意给出一个字符串,问最小所需的字符数量使得插入这些字符后,该字符串成为回文串回文串+区间dp,dp[i][j]表示使给定字符串的i-j段成为回文串的最小插入字符数量, 在记忆化搜索中有三类情况,一种是i>=j,i>j的段是无意义的,而i=j的段本身肯定是回文,不需插入字符,都是0,之后分c[i]=c[j]和c[i]!=c[j]两类情况,如果c[i]=c[j],继续往这段字符...原创 2018-08-18 17:16:50 · 147 阅读 · 0 评论 -
LightOJ 1025 - The Specials Menu(区间DP分类讨论)
题意:给一个字符串,问删掉任意个字符串后为回文串的有多少个。dp问题最重要的首先是初始化问题,本题初始化应该为dp[i][i]=1;表示i->i间回文串个数;然后考虑s[i]!=s[j],s[i] != s[j]时,我们考虑dp[i][j]从dp[i+1][j]和dp[i][j-1]转移,删掉s[j],dp[i][j] += dp[i][j-1],删掉s[i],dp[i][j] +=...原创 2018-08-18 16:37:39 · 119 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese(记忆化搜索)
FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each grid location is labelled (p,q) where 0 <= p < n and 0 <= q < n. At each ...原创 2018-08-17 15:59:03 · 116 阅读 · 0 评论 -
一排石子合并(区间dp)
有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 #include <iostream>#include <cstdio>#include <cstring>using namespace std;//...原创 2018-08-17 21:08:31 · 218 阅读 · 0 评论 -
zoj 3469 Food Delivery(区间DP&&贪心&&分状态讨论)
有一家快餐店送外卖,现在同时有n个家庭打进电话订购,送货员得以V-1的速度一家一家的运送,但是每一个家庭都有一个不开心的值,每分钟都会增加一倍,值达到一定程度,该家庭将不会再订购外卖了,现在为了以后有更多的家庭订购,要将外卖送到的情况下使得所有用户的不开心值总和达到最小先将各个点按坐标排序,餐厅也算一个点;从小到大排序;状态转移方程:从餐厅向两边遍历:i为左,j为右,dp[i][j]...原创 2018-08-18 10:39:36 · 119 阅读 · 0 评论 -
Easy Game - lightOj 1031
AB两人轮流从一序列的左右两端取数,都采取最优策略,A先手,一次可以取多个,但只能从一端取,不能不取,问A取的数之总和最多比B大多少#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int MAXN=110;LL pre[MAXN],dp[MAXN][MAXN];int m...原创 2018-08-18 11:45:35 · 203 阅读 · 0 评论 -
乘积最大(区间dp)
今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。分析:设dp[i][...原创 2018-08-17 21:28:35 · 504 阅读 · 0 评论 -
POJ 2955 Brackets 区间dp
http://poj.org/problem?id=2955DescriptionWe give the following inductive definition of a “regular brackets” sequence:the empty sequence is a regular brackets sequence, if s is a regular bracket...原创 2019-02-07 17:08:53 · 149 阅读 · 0 评论