题目链接:CF原网  洛谷

题目大意:有 $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)的更多相关文章

  1. Codeforces 1110D Jongmah (DP)

    题意:你有n个数字,范围[1, m],你可以选择其中的三个数字构成一个三元组,但是这三个数字必须是连续的或者相同的,每个数字只能用一次,问这n个数字最多构成多少个三元组? 解析:首先我们容易发现,我们 ...

  2. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  3. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  4. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  5. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  6. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  7. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  8. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

  9. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

随机推荐

  1. 常用数据库驱动名称以及URL

    oracle: 驱动类的名字:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@dbip:port:databasename Mysql: 驱 ...

  2. Django Rest Framework源码剖析(四)-----API版本

    一.简介 在我们给外部提供的API中,可会存在多个版本,不同的版本可能对应的功能不同,所以这时候版本使用就显得尤为重要,django rest framework也为我们提供了多种版本使用方法. 二. ...

  3. 20155223 Exp9 Web安全基础实践

    20155223 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定 ...

  4. 2017-2018-2 《网络对抗技术》 20155302 第二周 Exp1 PC平台逆向破解(5)M

    2017-2018-2 <网络对抗技术> 20155302 第二周 Exp1 PC平台逆向破解(5)M 1-实践目标 1.1-实践介绍 本次实践的对象是一个名为pwn1的linux可执行文 ...

  5. 奔跑吧Linux

    刚拿到MiZ702,就被他的"外貌"深深的吸引,核心板加底板的形式让她看上去,强大而神秘-- 华丽的外表之下是否有着与之相当的内含呢,我们拿Linux将其检验一番! 板载的TF卡里 ...

  6. Qt 的线程与事件循环

    Qt 的线程与事件循环

  7. Java Web应用中支持跨域请求

    转载:https://blog.csdn.net/lmy86263/article/details/51724221 由于工程合作开发的需要,后台的应用要能支持跨域访问,但是在这个跨域访问“时好时坏” ...

  8. 对html第一次尝试

    1.对于写文档                         修改后缀为html,双击进入为网页模式. 2.编写网页 1)新建 2)基本格式 <!DOCTYPE html><!-- ...

  9. http-cache浏览器缓存

    摘至知乎 首先得明确 http 缓存的好处 减少了冗余的数据传输,减少网费 减少服务器端的压力 Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间 加快客户端加载网页的速度 常见 ht ...

  10. ABP中文文档及源码说明

    目录 ABP.ModuleZero(ABP自带的一套用户模块) 版本管理(Edition) 特性管理(Feature)