DP题记录
像我这种低批废物,不得不记录一些套路了。
寒假集训 dp 题记录。
P7962 [NOIP2021] 方差
首先观察性质,得到差分可以交换,并且最优情况下是单谷的。
剩下的就比较简单了。把式子化一下,拆成一个差,然后把后项设为状态最大化前项即可。
P8392 [BalticOI 2022] Uplifting Excursion (Day1)
厉害题。首先注意到容量大但是单价小,所以考虑直接贪心,然后反悔。
具体地,把贪心后的重量限制在
然后就是 dp,不断拿出、放回元素,慢慢逼近
然后观察可得,调整过程中背包重量不会出现两次。因为如果出现两次,它肯定是拿出来若干,再塞回去更少数目,必定不优(前面的贪心保证了不会出现以少换多的情况)。
于是最多也就会操作
P7519 [省选联考 2021 A/B 卷] 滚榜
典型的省题题。首先只需找到
暴力的想法是枚举差分。但这样甚至是错误的,因为一个排列会被算多次。
AT_abc221_h [ABC221H] Count Multiset
挺神奇的题。
首先容易想到把多重集排个序,然后看成一张柱状图。
然后最直接的想法是,定义
这个东西时间复杂度不能接受,为
于是考虑枚举
这时候,我们考虑从上往下推!
设
转移:
啊?怎么突然变得这么简单?太神奇了吧。
前缀和优化即可。
(后记:其实在写题解的时候一直在想,要怎么想到这个思路。。。但发现它就是凭空出现的,一个很牛的思路。。。是因为没见过这个套路吗?这谁见过啊。看来这就是所谓的思维题吧。)
AT_agc013_d [AGC013D] Piling Up
考虑画出白球随取的次数变化的图像,容易发现它要么向上,要么不变,要么向下。
如果设
所以就很套路地强制必须出现
AT_agc002_f [AGC002F] Leftmost Ball
首先,不妨把第一个出现某个颜色的球涂成白色。
然后你要让每个白球唯一对应一个颜色,否则会算重。
因此从最左侧开始,如果遇到一个白球,那么钦定往右第一个遇到的没有被选过的颜色就是它原本的颜色。
于是这就很像一个拓扑序的问题,必须先选前一个白球才能选这个白球,而必须先选前一个颜色的彩球才能选这个颜色的。
到这里,如果你反应比较快,会发现它其实就把问题简化成了
然后考虑 dp,既然这两个相互独立,那就都设为状态好了。设
如果选择放白球,那么选择唯一。因为肯定要放第一个没有被占的位置。
如果选择放剩余
转移方程的话去看其他题解吧。我认为这个自己很容易写出来。
本文作者:Aquizahv's Blog
本文链接:https://www.cnblogs.com/aquizahv/p/18719215
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步