欢迎来到狼蛛之|

狼蛛之家

园龄:3年3个月粉丝:3关注:1

1.16模拟赛题解

T1

对于区间 [1,i] 的划分方案,划分长度一定是 i 的因数,因此考虑暴力枚举区间长度。

问题转化为快速 check 一段区间是不是美丽的。

首先,区间内的 1 一定要么全部变成左边的第一个非 1 值,要么全部变成右边的第一个。这样就处理掉了所有的 1,只需要考虑确定的值了。

考虑利用 st 表求出区间内最大值的位置,再用两个 st 表维护差分序列,check 两边是否是单调的。单次 check 的复杂度就做到了 O(1)

总复杂度 O(nlogn)

T2

考虑暴力转移,得到方程 dpi,j=min{dpk,j1+max{ak+1ai}}

考虑优化。设 minxi 表示钦定 ai 为区间最大值时的最优决策点。维护单调栈,每次 pop 掉一个元素时都对 minxi 进行 chkmin。另一种可能是 ai 不是最大值,那么需要把它与它左边第一个大于它的位置的 dp 值取 min。

时间复杂度 O(n2)

T3

暴力。

T4

dpi,j 表示前 i 个按键,第 i 个按键为 j 的方案数。

那么 dpi,j 能够转移到 dpk,j+1 就代表 ti,k[pjL,pj+L]

注意到 t 具有单调性,因此可以直接二分找到转移区间,然后差分维护。

时间复杂度 O(nklogk)

posted @   狼蛛之家  阅读(20)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起