四边形优化dp/区间dp
文章平均质量分 83
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
HDU 2829 Lawrence(四边形优化dp/斜率优化dp)
比较典型的问题,把n个节点分成m块,使得最后价值最小。 根据题意,很容易得出dp方程:dp[i][j]=dp[i-1][k]+sigma(sigma(a[l]*a[p]))(k<l<p<=j),两个sigma分别对l和p求和,其中dp[i][j]表示前j个点,分成i段的最小价值。转换一下式子,引入两个新数组可得:dp[i][j]=d[i-1][k]+c[j]-c[k]-s[k]*(s[j]-s[k]),其中c[i]表示a中从1~i任意两个数乘积的和,s[i]表示a的前缀和。我们发现,分别枚举原创 2017-07-25 09:40:39 · 495 阅读 · 0 评论 -
四边形优化dp总结
我们前一段时间讨论了斜率优化dp,可以说基本上已经掌握了这个套路。但是很多时候斜率优化还是有些局限,他只能在一些特定的dp方程中使用。现在我们通过一道“类似”斜率优化的dp,来了解一下四边形优化dp。 POJ 1160 。很古老很经典的一道题。题意是给出n个村子的位置,然后让你在这些村子中建立m个邮局,问如何建邮局能够使得所有村子到最近的邮局的距离之和最小。原创 2017-04-07 18:11:56 · 686 阅读 · 0 评论 -
CodeForces 149D Coloring Brackets(区间dp+记忆化搜索)
大致题意是给你一个合法的括号序列,让你对括号进行染色,要求只能用红蓝去染,一个括号可以选择染或者不染,然后相邻的括号如果染了色颜色不能相同,一对匹配的括号有且仅有一个括号被染色,问你总共有多少中染色方式。 开始时,考虑普通dp,设置长度以及当前位置颜色和为匹配括号数为参数,但是并不能确定之前的未匹配括号的染色状态,无法保证一对括号有且仅有一个染了色,故抛弃这种想法。转而看到了有人说是区间dp,于是也开始考虑,但是这个区间dp不像是普通的区间dp,因为普通dp我是可以任意枚举中间节点进行合并,原创 2017-09-26 14:58:58 · 397 阅读 · 0 评论 -
CodeForces 833B The Bakery(dp+线段树优化)
很容易看出转移方程的dp。 大致题意是,给你n个面包,m个盒子,每个盒子的价值定义为盒子中面包的种类数,然后要求每个盒子都要放至少一个面包,问最后总的价值和最大是多少。很容易写出状态转移方程:dp[i][j]=max(dp[i-1][k-1]+val[k][j]),其中dp[i][j]表示前j个面包用i个盒子装的最大价值总和,val[i][j]表示第i个面包到第j个面包中的面包种类数。现在问题的关键在于时间复杂度,暴力做复杂度是O(NMK)显然需要优化。 由于这种形式比较像斜原创 2017-09-26 17:01:48 · 369 阅读 · 0 评论 -
HDU 6212 Zuma ACM/ICPC 2017 Qingdao Online(区间dp)
Zuma游戏,相信大家都玩过,但是可能不知道它的名字罢了。 大致题意是每个珠子只有黑白两种颜色(其实多一点颜色也无所谓),然后一旦有三个及以上的同色珠子连在一起,那么就会自动消除同色的珠子。数据保证一开始没有三个连续的同色珠子,然后你每次可以选择一个颜色的珠子发射到任意位置,如果出现三同色那么消除,并且会发生连锁反应,问最后至少需要发射几个珠子才能使得所有珠子都被删除。 赛后才听说这是一道原题,POJ 2915,而且是弱化版本,那题是连续M个同色才能删除,而且不保证一开始没有原创 2017-09-18 18:14:05 · 1376 阅读 · 0 评论 -
ZOJ 4027 Sequence Swapping(DP+思维)
大致题意:给你一些括号,有左括号有右括号,每一个括号对应一个数值vi。当左右括号i、j相邻并且左括号在左、右括号在右,你可以选择交换这两个括号的位置,并且产生一个vi*vj的权值。交换次数不限,现在问你能够产生的最大权值和是多少。 首先,对于左括号来说,如果往右移了一位,即与某一个右括号交换了,那么就一定不会交换回来。这是一个很明显的无后效性,因此考虑...原创 2018-05-04 13:51:52 · 512 阅读 · 0 评论 -
CodeForces 981D Bookshelves(dp+贪心)
大致题意:给你n本书,要求你按顺序把这些书放到m个书架上面,每个书架的权值定义为书架内所有书的权值和。现在要求求这些书架权值的按位与操作和最大。 考虑二进制的性质,最高位如果取了,肯定比不取的值大。因此,如果存在一种情况使得二进制下,某一个高位为1,那么最后结果肯定大于等于这一位为1的数字。然后,最后结果显然是可以按位分解的,具有叠加性,例如样例24=(11000)2,那么一定能够拼凑出8和16。于是我们就可以考虑从高位开始贪心累加,如果令答案这一位为1可以找到可行解,那么把这一位贡献加入原创 2018-05-28 11:25:39 · 846 阅读 · 0 评论 -
HDU 6416 2018HDU多校赛 第九场 Rikka with Seam(dp + 前缀和优化)
大致题意:给你一个n*m的01矩阵,现在要让你每一行和每一列都去掉一个数字,而且要求相邻两行之间去掉数字的位置的绝对值要小于等于k。现在问你删除之后的矩形最多有几种。首先,我们一行一行考虑,对于同一行,显然是看有多少个块,有多少个块就有多少个方案。然后对于整个矩阵来说,任意位置(i,j)可以从上一行的(j-k,j+k)之间转移过来。dp[i][j]表示不考虑重复的情况下,处理到第i行,且第i行删掉第j个位置的方案数。那么,显然根据之前说的转移区间,有转移方程:原创 2018-08-21 11:24:54 · 662 阅读 · 0 评论 -
2019HDU多校赛 第七场 HDU 6652 Getting Your Money Back(区间dp + 单调优化)
大致题意:告诉你你的存款余额在一个区间内,然后每次你可以猜一个数字,如果余额大于等于你猜的数字,那么你可以取走这些钱并且代价为a,否则为代不能取走且价为b。你可以多次重复这个动作,直到你能够确定你初始时的总共有多少钱。现在问你,最少花费多少的代价能够知道你初始时的账户余额。这题有点像二分的意思,如果a和b相等,那么显然按照二分的策略即是最优。考虑到这一点,我们显然可以发现,...原创 2019-08-13 11:17:40 · 758 阅读 · 0 评论