background
冥思苦想。。。
哇!这题我会做!——但时间有点紧!——没事!打!
1 hour later,码完了!拍!拍对了!交!
“WOC,T70!这。。。”(拍案而起,怒目圆睁)
(隔壁一大佬)“诶!我过了!贼快!”
“你什么方法?”
“!@#KaTeX parse error: Expected 'EOF', got '#' at position 22: …不是一样吗,题解呢?” “!@#̲%&*”
“我就是题解法啊!什么垃圾数据连题解都卡!”
“我卡常了的。”
“怎么卡?”
“优化一下数组寻址时间!”
“QAQ~~”
举几个例子
T1 queue
要求支持区间轮换和询问区间v值出现的个数。(1≤v≤n≤1e5)(1\leq v\leq n\leq 1e5)(1≤v≤n≤1e5)
Time Limit:1s
很不NOIP的方法
轮换相当于点挪动位置
平衡树先预处理出那些位置要预先开好,然后分每一个v离线处理,时间复杂度O(nlogn)O(n\log n)O(nlogn)
很容易想到的方法
K个一块,每一块用链表维护,顺便维护快内每个值出现的次数,轮换的话依然是删除插入,并将中间每一个块尾元素挪到后一块开始。复杂度O(q(K+nK))O(q(K+\frac nK))O(q(K+K