题解 CF1404C 【Fixed Point Removal】
转化问题:
用\(i-a_i\) 代替 \(a_i\)
新的操作变为:去掉一个0,然后将之后的元素-1。
对于每个提问,记录\(l=1+x,r=n-y\)
将提问按照 \(r\) 再按照 \(l\) 排序以便于查询。
\(f(l,r)\) 维护子序列 \(a[l...r]\) 中可以移除的元素的最大数量。
\(r\) 从 \(1\) 变化到 \(n\) ,始终维护每个 \(l\) 的答案:
\(f(1,r),f(2,r)...f(n,r)\)
设\(s_i=f(i,r)\)
出现一个新元素 \(a_r\) 时,如果 \(a_r\ge 0\) 且 \(s_l\le a_r,s_l\)增加 \(1\)
(显然,当且仅当\(a_r\ge 0\) 且 \(s_l\le a_r,s_l\) 可以增加 \(1\) ,
否则要么就是\(a_r<0\)显然不可能 或者之前的0个数不够,\(a_r\) 还没有来得及减到 \(0\) )
设 \(lmax\) 是最大的 \(l\) 使得 \(l\le r\) 且 \(s_{lmax}\ge a_r\),将以 \(lmax\) 结尾的前缀 \(+1\)。
由定义可得,\(s_1≥…≥s_{lmax}≥a_r>s_{lmax+1}≥…≥s_n\) s单调递减。
二分寻找 \(lmax\) ( \(s\) 单调递减)。
使用 差分+树状数组 维护 \(s\) 数组。
时间复杂度:\(O(n\log^2 n+q\log n)\)
空间复杂度:\(O(n)\)
可以通过本题。
QwQwQ