题目链接: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. 解决php的交互式命令行不能正常启动的问题兼介绍psysh

    今天在自己的mac电脑上试着启动php的交互式命令行,发现敲下命令后一直卡在提示进入的地方,但没有出现已经进入的提示符,百度了下应该是与readline有关. 于是安装php的readline扩展,在 ...

  2. 20155308《信息安全系统设计基础 嵌入式C语言课堂考试补博客

    20155308<信息安全系统设计基础 嵌入式C语言课堂考试补博客 知识点 置位 ?bits = bits | (1 << 7) ; /* sets bit 7 */ bits |= ...

  3. 20155323刘威良《网络对抗》Exp5 MSF基础应用

    20155323刘威良<网络对抗>Exp5 MSF基础应用 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实 ...

  4. 【WPF】数据验证

    原文:[WPF]数据验证 引言      数据验证在任何用户界面程序中都是不可缺少的一部分.在WPF中,数据验证更是和绑定紧紧联系在一起,下面简单介绍MVVM模式下常用的几种验证方式. 错误信息显示 ...

  5. VS Code使用Git管理代码

    Visual Studio Code(简称VS Code)是一个轻量级且强大的代码编辑器,后台是微软,支持Windows.Mac和Linux操作系统,拥有丰富的插件生态系统,可通过安装插件来支持C++ ...

  6. 整理一些常用的前端CND加速库,VUE,Jquery,axios

    VUE https://cdn.staticfile.org/vue/2.2.2/vue.min.js Jquery https://cdn.bootcss.com/jquery/3.4.0/jque ...

  7. Unity 角色场景传送功能

    传送触发器 using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine. ...

  8. 《unity 3D 游戏开发 第二版》宣雨松 分享 pdf下载

    链接:https://pan.baidu.com/s/1LfRTGUmaE_lGdcmd6QiZkg 提取码:e2sn

  9. Async 异步转同步详细流程解释

      安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 流程控制: 简化九种常见的流程的处理 ...

  10. PAT甲题题解-1128. N Queens Puzzle (20)-做了一个假的n皇后问题

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789810.html特别不喜欢那些随便转载别人的原创文章又不给 ...