1 条题解
-
0
题解
思路
把不含所求三元组的区间称为坏区间。
做法
序列值只有 到 :若区间长度至少为 ,根据鸽巢原理某个值至少出现三次,这三个相等的值已经组成等差子序列。因此坏区间长度至多为 ,只需从每个左端点向右检查最多 个元素。
扩展窗口时维护
seen[v]表示值 已出现,以及need[v]表示此前存在一对下标 使 。加入新值 时,若need[x]为真,窗口已经包含等差三元组,后续所有扩展也都是好区间;否则用每个已出现的 产生期待值 ,再标记 已出现。累计所有仍未变好的短窗口得到坏区间数,用总区间数减去它。复杂度
时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1681
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者