【学习笔记】dp 基本模型

可能还是以一些偏思维的 dp 为主 。

可能会做的很慢 。

Two Merged Sequences

  • 发现自己写丑了。 O ( n ) → O ( n log ⁡ n ) O(n)\to O(n\log n) O(n)O(nlogn) 。于是重新写了 O ( n ) O(n) O(n) 的做法 因为下一道题要用

Madoka and Laziness

我要谴责翻译的人,这里的点对表示的是山顶的位置 。

假设 a [ p o s ] a[pos] a[pos] 最大,那 p o s pos pos 前面肯定是递增, p o s pos pos 后面是递减

但是还不够。再枚举 p p p ,我们假设 p > p o s p>pos p>pos (反转序列再做一遍即可)

画图理解,对于 [ 1 , p o s ] [1,pos] [1,pos] split 成两个单增序列, [ p o s , p ] [pos,p] [pos,p] split 成单增序列 + 单减序列, [ p o s , n ] [pos,n] [pos,n] split 成两个单减序列 。

枚举 p p p 统计答案 。水题不说了不说了 。

Weighted Increasing Subsequences

3200 的评分虚高 。

考虑 i i i 对答案的贡献

p i p_i pi 为满足 a j > a i a_j>a_i aj>ai 的最大的 j j j

d p i dp_i dpi 表示以 i i i 开头的上升子序列方案数

g i g_i gi 表示以 i i i 开头的 e n d p o s < p i endpos< p_i endpos<pi 的上升子序列方案数

d p i ′ dp'_i dpi 表示以 i i i 结尾的上升子序列的方案数

答案是 ∑ i = 1 n d p i ′ × g i \sum_{i=1}^ndp'_i \times g_i i=1ndpi×gi

画图理解一下

得到转移式子 g i = ∑ j = i + 1 p i − 1 d p j [ a j ≥ a p i ] + g j [ a i < a j < a p i ] + 1 g_i=\sum_{j=i+1}^{p_i-1}dp_j[a_j\ge a_{p_i}]+g_j[a_i<a_j<a_{p_i}]+1 gi=j=i+1pi1dpj[ajapi]+gj[ai<aj<api]+1

码码码。。。

呼。码完了。。。

MEX counting


__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530133.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(21)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示