给定一个序列,支持交换两个元素和询问区间$(l,r)$内等于这个值的位置的数量。
链接
题解
肯定有人学数据结构学傻了吧,我们机房有写cdq的,有写主席树的,跑的都很快亲测这份代码不吸氧比上面两份代码吸氧还快……
评测结果
用vector记录每一种颜色的兔子出现在从左到右的哪几个位置,对于每个询问,二分查找出当前右端点$r$的位置和左端点$l-1$的位置,两个值相减即得答案,但是要注意边界处理。
对于交换,找到两个兔子的位置,直接进行交换即可,注意要把所有的信息都交换……
代码
1 |
|
技不如人,被吊打
给定一个序列,支持交换两个元素和询问区间$(l,r)$内等于这个值的位置的数量。
肯定有人学数据结构学傻了吧,我们机房有写cdq的,有写主席树的,跑的都很快亲测这份代码不吸氧比上面两份代码吸氧还快……
评测结果
用vector记录每一种颜色的兔子出现在从左到右的哪几个位置,对于每个询问,二分查找出当前右端点$r$的位置和左端点$l-1$的位置,两个值相减即得答案,但是要注意边界处理。
对于交换,找到两个兔子的位置,直接进行交换即可,注意要把所有的信息都交换……
1 | #include<bits/stdc++.h> |