【学习笔记】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+1pi−1dpj[aj≥api]+gj[ai<aj<api]+1
码码码。。。
呼。码完了。。。
MEX counting
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530133.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」