CF竞赛题目讲解_CF474E(树状数组)
2022-08-04 10:53 作者:Clayton_Zhou | 我要投稿
// https://codeforces.com/problemset/problem/474/e
因为 a 范围很大,所以先排序去重到 b 数组。
令 dp[i] 表示取到了第 i 个数的最大长度。
然后在 b 中二分找到大于等于 hi+d 的第一个位置r,二分找到小于等于 hi−d 的第一个位置 l。
随后需要知道 hi 在区间 [1,l] 或 [r,upper_limit] 内的 max{dp[res]}。
这里使用2个树状数组维护最大值
input
5 2
1 3 6 7 4