———区间dp
MissZhou要努力
不晓日月,不辩兰艾,终日碌碌,安与燕雀相随乎
展开
-
cf149DColoring Brackets【区间dp求方法数】
rt,这个题是求方法数的==题意:为匹配好的括号涂色,满足三个条件:1)要么不涂色,要么涂红色,要么涂蓝色 2)每对匹配的括号有且只有一个涂色 3)相邻的两个括号不同色一说到括号匹配应该马上想到用栈来找匹配的括号并记录序号对应关系,找好之后,dp无外乎是递推或是递归,递推一般用来解决“序列每个元素等级相同”的问题,就比方说那种第一重循环是区间长度,第二重循环是区间左端点的,明显和这个题对不上。递归的话,最开始想的是找到一段(((..)))这种的就调用一次,其实这个步骤完全可以写在dfs中,而原创 2016-05-07 16:46:43 · 796 阅读 · 0 评论 -
lightoj 1031 - Easy Game 【区间dp】360 2017笔试编程题3
题意:两个小孩轮流从一段数字的左边或者右边取走连续的一段,问先手比后手最多多得多少分尼玛,区间dp居然还有这么玩的==我们可以想到这种题都是小区间合并成大区间的,然而这种类似于博弈的做法实在是让人头疼QAQ,其实倒也不难,既然第一个人的值是有第二个人推导过来的,那么用的值也是第二个人得到的最优值,这么来说,先手后手只是相对概念了==把[i,j]分成[i,k] [k+1,j]两段,如果取走左边的就是左边的和减去右边那部分后手比先手多的部分,反之亦然原创 2016-04-29 17:24:42 · 873 阅读 · 0 评论 -
nyoj746整数划分(四)【区间dp】
区间dp的第一道题,各种sb错误==1.中间输出和必要的步骤要分开写,要不就容易把重要的部分注释掉 2.提交前自己写示例!/******************nyoj7462016.2.180 236 C/C++******************/#include #include#includeusing namespace std;long long n,a[原创 2016-02-18 11:17:49 · 488 阅读 · 0 评论 -
nyoj737石子合并【区间dp】
和论文题不一样啊啊啊啊啊啊,这个题排一排,论文是一圈啊啊啊,WA了好久才发现 论文题最后求完数组还要找[1,n] [2,n+1].............[n,n+n+1]的最值,这个题只需要输出头一个/******************nyoj7372016.2.18732 868 C/C++ 02-18 15:47:11******************/#inc原创 2016-02-18 15:53:10 · 618 阅读 · 0 评论 -
nefu269 noip2006能量项链【区间dp 环】
2006noip省选第一题啊,卡了我几个小时不知道错哪了了。原来还是没理解好递推的顺序。刚刚那个合并石子 就是不理解查找某一区间最大值时后面一半没有求出的处理,这个题也一样,偏执的觉得既然寻找最大值时候只是在1-n的区间里寻找,那我的起点就只需要遍历到n就可以了,但是啊,比方说你求n~2*n-1的时候后边一半的值怎么来的啊,不还得你自己求啊林大的网页复制下去没排版,截屏凑合看吧原创 2016-02-18 20:19:45 · 573 阅读 · 0 评论 -
zoj3537cake【最优三角剖分+凸包】
几乎就是照着敲的,惭愧ing说题意,想找论文题没找到,只有浙大的这个比较类似,但是有凸包,本宝宝不开心……简单说一下凸包,“在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧地圈起来,并且为凸边形,这就是凸包了”,本题要求所有已知点都在绳子上,不在的输出提示信息。什么情况不在,凸包的算法入栈个数小于点的个数的时候不在。再说排序之后的处理,根据论文中对于最优三角剖分的处理讲解,我们知道需要原创 2016-02-19 10:26:30 · 1083 阅读 · 0 评论 -
poj2955Brackets【区间dp 括号匹配】
给你()【】组成的序列,问你最长能构成多少个匹配的。开始的错误思路,又是思维定势,觉得应该是把区间分两半,左边dp值加右边dp值再加左边区间和右边区间凑到一起能多形成的括号数,思路是这么回事没问题,中间输出了n多中间变量才发现自己这里求错了,左边和右边凑到一起多形成的不可以用min(左边左括号的数量,右边右括号的数量),有严重的思维漏洞啊!左边左括号的可以与左边右括号匹配,右边右括号也可以和右边左原创 2016-02-19 17:04:23 · 596 阅读 · 0 评论 -
hdu2476String painter【区间dp】递推+递归的记忆化搜索
开始刷dp,图论的算法周末或者上课再学~这个题AC率那么高居然不会做==,太弱了说题意:刷一下这个线段变成都是一个字母,再刷一下可以覆盖原来的,问最少刷几下由A串变成B串。开始就想到括号匹配了,但是纠结于怎样能取最优,那个题是从左端点+1到右端点找匹配取最优。这个题怎样能减少操作呢?我们想到如果某两个点的样式一致,那么他们可以先涂,后来的把中间那段覆盖上就可以满足要求了。既然是dp,就有状态转原创 2016-03-10 16:23:29 · 783 阅读 · 0 评论 -
hdu4283You Are the One【区间dp】
招聘——巴卡斯科技(杭州)、英雄互娱(杭州)You Are the OneTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2732 Accepted Submission(s): 1256Pro原创 2016-03-10 20:37:44 · 430 阅读 · 0 评论 -
nefu1130Attack monsters【平行四边形优化石子合并】
//题中明确说了给定的不一定是有序的!! #include #include #include #include using namespace std; const int INF = 1 << 30; const int N = 1005; int dp[N][N]; int p[N][N]; int s原创 2016-04-21 17:09:17 · 516 阅读 · 0 评论 -
POJ1141 ZOJ1463 Brackets Sequence【区间dp】
题意十分简单,然而卡了我一上午,也怪自己状态不好,学成这样还想着玩?!给定字符串,问最终匹配成的字符串【】() 开始还以为是像poj2955Brackets【区间dp 括号匹配】 这样的,结果是难了好多==首先求出的dp[][]数组意义是区间内最少添加的括号数量,pos[][]表示区间内加括号位置,-1表示i,j匹配。据说是递归时间太慢,下面的递推求dp[][]。具体看代码吧,寝室要关门了==原创 2016-04-26 22:11:36 · 576 阅读 · 0 评论 -
HDU 4293 Groups【区间dp】
SubmitStatusDescription After the regional contest, all the ACMers are walking alone a very long avenue to the dining hall in groups. Groups can vary in size for kinds of reasons, which means原创 2016-04-29 17:43:07 · 444 阅读 · 0 评论 -
HDU 4745 Two Rabbits【非连续最长回文子序列,区间DP】
居然求环的回文串还可以这么玩~~本题题意是:一个环,两只兔子一只顺时针走,一只逆时针走,从头一个起点开始,每步两只都需要选择相同的数,最多走一圈,问最多走几步?开始以为是求最多的点数==然后遇到环就想把环倍增,然而依旧不会。题解说是求出1-n的dp[i][j]值为区间内的回文串长度,然后把串分成两半,两边求和取最大值即可。为什么呢?将两侧子串的回文中点都可以当做开始的点,就是这里,我又读错题了,我以为起点是同一个石头。。。纠结了半天,用ac代码读入回文串的长度是偶数的情况,结果和我想的不一样才又看的原创 2016-05-06 16:44:08 · 774 阅读 · 0 评论 -
lintcode 168. 吹气球【记忆化搜索+区间dp】
168.吹气球中文English有n个气球,编号为0到n-1,每个气球都有一个分数,存在nums数组中。每次吹气球i可以得到的分数为nums[left] * nums[i] * nums[right],left和right分别表示i气球相邻的两个气球。当i气球被吹爆后,其左右两气球即为相邻。要求吹爆所有气球,得到最多的分数。样例样例 1:输入:[4, 1, 5, 10]...原创 2019-09-01 12:20:24 · 229 阅读 · 0 评论