一段高度记录轮转可排,当且仅当下降次数(满足 ai>ai+1 的位置个数)至多为 1:
0 次:本身非降序;1 次:把下降点后的后缀搬到前面后仍非降序,这还要求末元 ≤ 首元。直接枚举子数组是 O(n2)。用双指针维护窗口 [l,r]:右端 r 右移时更新下降次数;若下降超过一次,或虽只有一次但 ar>al,则右移 l 直到重新合法。对每个 r,当前窗口内以 r 结尾的合法子数组有 r−l+1 个。
流水线上有一列托盘高度记录。质检把一段连续记录称为「轮转可排」,当且仅当把它的某个后缀整体搬到最前面后,高度变为非降序。空操作(搬动整段、结果不变)也允许,因此本身已是非降序的记录同样合格。
给定长度为 n 的正整数数组 a,请统计有多少个非空连续子数组是轮转可排的。连续子数组指从原数组中取一段下标连续的元素。
约束:1≤n≤100000,1≤ai≤1000000000。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册