传送门


题解搬运工

设原问题为问题A。每一次减少\(\min\{p_i , p_{i+1}\}\)难以处理,我们考虑将限制变得宽松一些:每一次可以减少\([1,\min\{p_i , p_{i+1}\}]\)的任意值,需要满足的终止条件与问题A相同。我们称其为问题B,设区间\([l,r]\)在问题B操作下的答案为\(g_{l,r}\)。显然问题B的答案要小于等于问题A。

再考虑:在问题AB中,最后的结果一定是两个正数之间有一段0。我们再考虑:设\(f_{l,r}\)表示只操作区间\([l,r]\)使得区间\([l,r]\)的值全部小于等于\(0\)(可以为负)的最小代价,设其为问题C。不难发现:设\(c_l = p_l\),\(c_i = \max\{p_i - c_{i-1} , 0\} , i \in [l+1,r]\),那么\(f_{l,r} = \sum\limits_{i=l}^r c_i\)。

首先,\(f_{l,l} = g_{l-1,l+1}\),\(f_{l,l+1} = g_{l-1,l+2}\),而

\(f_{l,r} = \sum\limits_{i=l}^rc_i = \sum\limits_{i=l}^{r-2}c_i + c_{r-1} + \max\{p_r - c_{r-1} , 0\} = f_{l,r-2} + \max\{p_r , c_{r-1}\} \geq f_{l,r-2} + f_{r,r}\)

不难发现中间漏掉了一个\(r-1\),相当于\(r-1\)不变为\(0\),而\([l,r-2]\)和\([r,r]\)变为\(0\),也就是说在最优情况中\(r-1\)会保留下来,即\(g_{l-1,r+1} = g_{l-1,r-1} + g_{r-1,r+1}\)。不断递归下去就可以知道\(g_{l-1,r+1}\)的最优情况中,极长的\(0\)连续段不会超过\(2\)。

因为极长\(0\)段小于等于\(2\),所以问题C中不会出现负数,所以问题C中构造的解在问题B中一定满足。至此我们完成了C到B的转化。

同时注意到问题B中的所有操作一定会让若干个数变为\(0\),所以在问题B中的可行操作在问题A中也一定可行(这个感性理解好了,不知道怎么严格证明),即在问题A中极长连续\(0\)段长度不会超过\(2\)

接下来考虑DP:设\(f_{i}\)表示以\(i\)结尾、选择\(i\)的\([1,i]\)的最优答案,转移考虑其之前选择多少个\(0\),并记下转移点。值得注意的是如果存在两个\(0\),那么最少步数一定是\(\max\{p_{i-1} , p_{i-2}\}\),即先对\(p_{i-1} , p_{i-2}\)做一次,剩下的一次再做完。最后还原DP结果输出构造方案即可。

值得注意的一点是如果\(f_i\)的操作过程中使得某个数变为负数是一定不优的,由问题C就可以知道这一点。

代码

CF933E A Preponderant Reunion DP的更多相关文章

  1. 【CF933E】A Preponderant Reunion(动态规划)

    [CF933E]A Preponderant Reunion(动态规划) 题面 CF 洛谷 题解 直接做很不好搞,我们把条件放宽,我们每次可以选择两个相邻的非零数让他们减少任意值,甚至可以减成负数(虽 ...

  2. BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4142  Solved: 1964[Submit][Statu ...

  3. 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...

  4. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...

  5. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  6. BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4026  Solved: 1473[Submit] ...

  7. [斜率优化DP]【学习笔记】【更新中】

    参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...

  8. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  9. px、dp和sp,这些单位有什么区别?

    DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...

随机推荐

  1. Linux 和 windows下查看运行命令的位置

    经常遇到要查看某个命令的运行文件在哪儿! 比如说vue cli,经常使用vue命令创建项目,如果你对nodejs的全局包安装目录了解可能一下就找到了, 蛋疼的是不一定每个命令都是nodejs下的,有可 ...

  2. [技术博客] 用户验证码验证机制---redis缓存数据库的使用

    目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...

  3. [Gamma阶段]第七次Scrum Meeting

    Scrum Meeting博客目录 [Gamma阶段]第七次Scrum Meeting 基本信息 名称 时间 地点 时长 第七次Scrum Meeting 19/06/3 大运村寝室6楼 25min ...

  4. html在div中显示滚动条

    基本思路:滚动条要添加到内容部分的父标签上(div),内容部分不设置大小,父标签要明确设置大小,并且父标签要添加overflow样式,并设置成auto. 打开的效果如下: 这时可能有人会问,父div的 ...

  5. JAVA字符编码一:Unicode,GBK,GB2312,UTF-8概念基础

    第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 来源:holen'blog   对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16, ...

  6. annotation processor 为啥没有被调用?

    Android Studio 3.5 使用@AutoService(Processor.class)注册annotation processor Android Plugin for Gradle:  ...

  7. gcc 编译两个so其中soA依赖soB

    有两个so,其中soB中调用soA: 那么我们打包soB的时候连接soA: 在打包test程序的时候连接soB,此时soB会自动查找依赖的soA: 如下测试 在编译之前指定环境变量:export LD ...

  8. TortoiseGit用户名密码的更换方法介绍

    http://www.downza.cn/xy/53171.html 有时候因实际需求要更换TortoiseGit用户名密码,怎么办呢?下文就是TortoiseGit用户名密码的更换方法介绍,一起看看 ...

  9. [转]docx4j实现动态表格(模板式)

    原文地址:https://chendd.cn/information/viewInformation/other/257.a 除了前篇文章中讲到的编程式创建表格外,基于模板实现的列表表格也是非常常用或 ...

  10. Java:JSON和Map相互转换

    Java:JSON与Map相互转换 需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0 ...