CF1110D Jongmah(DP)
题目大意:有 $n$ 个数,每个都不超过 $m$。一个三元组 $(a,b,c)$ 是合法的当且仅当 $a=b=c$ 或者 $a+1=b=c-1$。每个数只能用一次。问最多能凑出一个合法三元组。
$1\le n,m\le 10^6$。
首先我们发现对于一个 $x$,$(x,x+1,x+2)$ 不会出现超过 $2$ 次。因为 $3$ 个或以上的 $(x,x+1,x+2)$ 也可以被拆分成 $(x,x,x),(x+1,x+1,x+1),(x+2,x+2,x+2)$ 这几个三元组,而总个数不变。
那么就可以DP了。(smg???)
首先对序列开桶,设有 $cnt_i$ 个数是 $i$。
设 $dp_{i,j,k}$ 表示现在只考虑 $\le i$ 的数。其中我们规定以后还有 $j$ 个 $i$ 会被用到第二种二元组中,还有 $k$ 个 $i-1$ 会被用到第二种二元组中。
那么就可以知道,$0\le j,k\le 4$(具体原因下面会讲),$j$ 不能超过 $cnt_i$,$k$ 不能超过 $cnt_{i-1}$。
初始状态:$dp_{1,j,0}=(cnt_1-j)/3$。因为有 $j$ 个不能用到第一种三元组。
转移:$dp_{i,j,k}=\max(dp_{i-1,k+l,l}+l+(cnt_i-j-l)/3)$。
具体解释一下,我们枚举用多少个 $i-2$ 配成多少个 $(i-2,i-1,i)$(就是 $l$)。
$i-2$ 再怎么样,前面规定要用的也得用完了,所以转移前的状态第三维是 $l$。
转移后还有 $k$ 个 $i-1$ 要被用到第二种三元组,说明转移前规定了 $k+l$ 个。所以转移前的状态第二维是 $k+l$。
(这也解释了为什么要开到 $4$)
那么有 $l$ 个 $i$ 已经被用到第二种三元组,而有 $j$ 个 $i$ 被规定不能用到第一种三元组,所以至多可以多出 $(cnt_i-l-j)/3$ 个第一种三元组。
答案就是 $dp_{m,0,0}$。规定了以后要用的状态是无效的。
代码的话……由于我基本看着PBdalao的代码写的,所以相似度高达99%……不好意思放了……
CF1110D Jongmah(DP)的更多相关文章
- Codeforces 1110D Jongmah (DP)
题意:你有n个数字,范围[1, m],你可以选择其中的三个数字构成一个三元组,但是这三个数字必须是连续的或者相同的,每个数字只能用一次,问这n个数字最多构成多少个三元组? 解析:首先我们容易发现,我们 ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
随机推荐
- 常用数据库驱动名称以及URL
oracle: 驱动类的名字:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@dbip:port:databasename Mysql: 驱 ...
- Django Rest Framework源码剖析(四)-----API版本
一.简介 在我们给外部提供的API中,可会存在多个版本,不同的版本可能对应的功能不同,所以这时候版本使用就显得尤为重要,django rest framework也为我们提供了多种版本使用方法. 二. ...
- 20155223 Exp9 Web安全基础实践
20155223 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定 ...
- 2017-2018-2 《网络对抗技术》 20155302 第二周 Exp1 PC平台逆向破解(5)M
2017-2018-2 <网络对抗技术> 20155302 第二周 Exp1 PC平台逆向破解(5)M 1-实践目标 1.1-实践介绍 本次实践的对象是一个名为pwn1的linux可执行文 ...
- 奔跑吧Linux
刚拿到MiZ702,就被他的"外貌"深深的吸引,核心板加底板的形式让她看上去,强大而神秘-- 华丽的外表之下是否有着与之相当的内含呢,我们拿Linux将其检验一番! 板载的TF卡里 ...
- Qt 的线程与事件循环
Qt 的线程与事件循环
- Java Web应用中支持跨域请求
转载:https://blog.csdn.net/lmy86263/article/details/51724221 由于工程合作开发的需要,后台的应用要能支持跨域访问,但是在这个跨域访问“时好时坏” ...
- 对html第一次尝试
1.对于写文档 修改后缀为html,双击进入为网页模式. 2.编写网页 1)新建 2)基本格式 <!DOCTYPE html><!-- ...
- http-cache浏览器缓存
摘至知乎 首先得明确 http 缓存的好处 减少了冗余的数据传输,减少网费 减少服务器端的压力 Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间 加快客户端加载网页的速度 常见 ht ...
- ABP中文文档及源码说明
目录 ABP.ModuleZero(ABP自带的一套用户模块) 版本管理(Edition) 特性管理(Feature)