『单调栈和单调队列』Day1

1.1 OpenStreetMap

单调队列预处理行。

再做一次列。

1.2 Fruit Sequences

100 行笛卡尔树伪了。

没什么好说的。贡献。记录每个长度的最新下标。

再维护一下每次的增量。

1.3 League of Legends

模拟赛原题,改成了单调队列优化。

核心思路就是你把没有限制的大线段处理出来。

然后小线段都是首尾相接,做 dp。

1.4 Yakiniku Restaurants

经典不回头。

那就枚举区间,对每个卷取区间最大值,St 表解决。

又发现有决策单调性。于是完了。

1.5 楼房重建

四个月之前做的,原来叫做 ds 维护单调队列。

不多说,2log。

1.6 水镜

性质题。

考虑峰和谷的情况,对 \(2L\) 作出限制。

然后根据单调性二分左端点对应的右端点。

1.7 AT_arc068_d

这个 dp 类似冒泡排序 
发现你的序列从 k 到 1 是单减的两个序列拼接,那么就是冒泡排序反过来的 dp 

设 dp(i, j) 表示前 i 个数删除 最小值是 j 的方案书
当然你可以像冒泡排序一样把这个东西变成组合数 
 
dp(i, j) = sum : dp(i - 1, k)  (k >= j) 

删除的数中一边的 min 要大于剩下没删的 max
所以如果有 min 值,就放在左边排序 

1.8 AT_arc072_d

有一个强制是第 \(i\) 次必须选。

那么肯定是把 \(i\) 和最大的温度混合。注意到这一点即可。

每次合并斜率,去除没有必要的小值。

注意单调队列在这题不一样的写法。

1.9 CF627E

考场只会 \(O(n^3)\) 算法。绅士乱搞了一通没过。

果然,NOI rk1 30min 切黑。

不会……

posted @ 2024-08-07 16:06  LCat90  阅读(14)  评论(0编辑  收藏  举报