AtCoder Beginner Contest 339 - E Smooth Subsequence 题解
题意
给定一个长度为 的序列 和整数 ,求出序列 中满足任意两个相邻元素之差的绝对值都不小于 的子串的最大长度。
数据范围
- 所有输入数据都是整数。
思路
显然是一道 dp 题。
状态设计&转移
用 代表以 为结尾的 的满足要求的子串中的最大长度,则我们只要找一个符合要求的 并把以 为结尾的最长子串接在 之前即可,于是可以得到以下状态转移方程:
但从 到 枚举选出最大的 时间复杂度为 ,无法通过本题,所以考虑用数据结构优化,而线段树可以做到用 的时间复杂度查询和修改区间最值,于是我们可以建立一棵以序列 中的值为下标的线段树来维护 ,每次求解 时查询在区间 内的最大值即可。
答案即为 。
代码
1 | const int N = 5e5+5; |
其他
あぁ!夏を今もう一回!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Misaka's Blog!
评论
re