1 条题解
-
0
题解
思路推导
题目要求一个长度为 的窗口满足 。约去公共因子 后,每一项都等价于 。
因此,一个窗口合法,当且仅当它覆盖的连续 对相邻元素全部满足上述不等式。问题转化为统计长度至少为 的连续“好边”段所包含的长度为 的小段数量。
做法
从左到右扫描所有相邻对。若当前相邻对满足 ,令当前连续好边数加一;否则清零。每当连续好边数不小于 ,就有一个以当前位置结尾的新合法窗口,答案加一。
比较时使用 64 位整数计算 ,避免 接近 时的边界问题。
正确性证明
由约分可知,窗口中的第 个原不等式与相邻条件 等价,所以窗口合法恰好等价于其中连续 条边全部为好边。
扫描到一条边时,维护量等于以该边结尾的最长连续好边段长度。若该长度至少为 ,则最后 条好边唯一对应一个以当前位置结尾的合法窗口;若小于 ,则不存在这样的窗口。算法对每个可能的右端点恰计数一次,故得到全部且仅有合法窗口。
复杂度分析
每个元素只被扫描常数次,时间复杂度为 ,额外空间复杂度为 。
- 1
信息
- ID
- 1060
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者