【学习笔记】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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值