专栏文章
题解:AT_abc433_c [ABC433C] 1122 Substring 2
AT_abc433_c题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min1h5ke
- 此快照首次捕获于
- 2025/12/01 19:01 3 个月前
- 此快照最后确认于
- 2025/12/01 19:01 3 个月前
思路
根据题目要求序列的定义,要找一个满足要求的序列,需要找到一个 使得 ,只有这样的 才能产生满足要求的序列。接着不断向外扩展序列的左右端点,根据定义,如果新的左端点和右端点一直和最初的左端点和右端点相等,每延长一次就有一个新的序列。
例如,输入字符串为
111222,可找到 ,不断向外扩展,有12 1122 111222三个序列。代码
循环 从 到 ,如果 满足条件,就进入内层扩展循环, 就可以充当子序列的右端点,因为在右端点扫过的区间值全部相等,不可能成为合法的 。
在内层扩展完毕后, 指向第一个不满足条件的元素,需要减 ,第一次退回最后一个满足条件的元素,由于它可能是合法的 ,因此需要再减一次,让外层循环将 加一,读者自证不难。
时间复杂度为 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...