-
数区间颜色个数只数最左边的一个。
-
维护时间戳来避免多次
memset
。 -
树状数组上倍增-\(O(\log n)\)。
开始二分,设初始位置为 \(r\),\(sum=\sum\limits_{i=1}^r tr_i\),要求的数记为 \(ans\)。
考虑依次跳 \(2^{\log n},2^{\log n-1},...,2^0\) 个单位,方式如下:如果跳的这位更新后 \(>ans\),则不更新,否则更新。也就是说,时刻保证 \(\sum\limits_{i=1}^r tr+i\le y\)。
发现往后跳的段都是诸如 \([r+1,r+2^k]\) 的段,显然树状数组可以 \(O(1)\) 统计。
-
关于平均值的问题中,若给定平均值,可以考虑将将每个位置的值减去平均值,将平均值转化为了区间和大于等于0。
-
关于中位数等问题中,常见二分答案,将大于 mid 的数记为 1,小于 mid 的数记为 -1,如果区间和为0则这个数就是序列中位数。P1627
-
多个约束条件,常见拆条件,例如枚举或者算贡献。
-
选 \(x\) 个区间,要求公共点 \(\to\) 区间中有位置被覆盖次数 \(>=x\)。P1712 [NOI2016] 区间
-
序列中随机选取 [l,r] 的期望等价于求出和除以序列数。CF846F P5068 [Ynoi2015] 我回来了
-
严格递增和不严格递增:令 \(b_i=a_i-i\),就将严格递增转化为了不严格递增。
-
考虑一个柿子如果形如 \(f_i=\max\limits_{i\le j\le n}(f_j+\min(sum1_{i,j},sum2_{i,j}))\),那么可以先强制钦定取第一项,做两次算即可。
-
考虑一个 dp 柿子从前面连续的项转移,但是不能用单调队列,考虑线段树或 cdq 分治维护。
-
势能分析
-
考虑一些关于最大值的东西可以搬到笛卡尔树上分治。
-
考虑一个暴力可能可以优化的途径:记忆化、阈值分治