Mugino_Shizuri @ 2024-07-10 17:11:58
自己胡的写法,可能有锅。
在执行操作2时RE。
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=0;
char c=getchar();
while(c<'0'||c>'9'){f|=(c=='-');c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
return f?-x:x;
}
struct node{
node *ne;
vector < int > d;
node(){d.clear();ne=NULL;}
inline void pop(){d.pop_back();}
inline int size(){return d.size();}
inline int back(){return d.back();}
inline bool empty(){return d.empty();}
inline void push(const int x){d.emplace_back(x);}
inline void erase(const int x){d.erase(lower_bound(d.begin(),d.end(),x));}
inline void insert(const int x){d.insert(lower_bound(d.begin(),d.end(),x),x);}
inline int rank(const int x){return distance(d.begin(),lower_bound(d.begin(),d.end(),x));}
}*h=NULL,*tmp,*r;
int n,lenth=1100,ans,las,m;
inline void check(node *x){
if(x->size()>=(lenth<<1)){
node *p=new node;
for(int i=lenth;i<x->size();++i) p->push(x->d[i]);
x->d.resize(lenth);p->ne=x->ne;x->ne=p;
return ;
}
}
inline void insert(const int x){
for(r=h;r->ne!=NULL;r=r->ne) if(r->empty()||r->back()>=x) break;
r->insert(x);check(r);
}
inline void erase(const int x){
for(r=h;r->ne!=NULL;r=r->ne) if(r->back()>=x) break;
r->erase(x);check(r);
}
inline int queryrank(const int x){
int res=0;
for(r=h;r->ne!=NULL;r=r->ne){
if(r->back()>=x) break;
res+=r->size();
}
return res+r->rank(x)+1;
}
inline int kth(int k){
for(r=h;r->ne!=NULL;r=r->ne){
if(k>r->size()) k-=r->size();
else break;
}
return r->d[k-1];
}
inline int pre(const int x){return kth(queryrank(x)-1);}
inline int suf(const int x){return kth(queryrank(x+1));}
int main(){
n=read();m=read();h=new node;
for(int i=1;i<=n;++i) insert(read());
for(int i=1,opt,x;i<=m;++i){
opt=read();x=read()^las;
if(opt==1) insert(x);
else if(opt==2) erase(x);
else if(opt==3) las=queryrank(x);
else if(opt==4) las=kth(x);
else if(opt==5) las=pre(x);
else las=suf(x);
if(opt>=3) ans^=las;
}
printf("%d\n",ans);
return 0;
}
by Mugino_Shizuri @ 2024-07-10 17:12:56
说错了,块状链表。
by Mugino_Shizuri @ 2024-07-10 17:21:36
是用正解代码解码后的操作 2,也就是不存在解码错误导致RE。
by Mugino_Shizuri @ 2024-07-10 17:23:38
去掉 check 就是对的。
by Guchenxi0971 @ 2024-07-10 17:29:12
@Mugino_Shizuri 有数据吗?
by Mugino_Shizuri @ 2024-07-10 17:35:53
@Guchenxi0971 大小一百万,要的话我挂 ACing里(解码后的数据)。
by Mugino_Shizuri @ 2024-07-10 17:38:33
@Guchenxi0971 块链没判空,我naive了。
by Guchenxi0971 @ 2024-07-10 17:40:36
@Mugino_Shizuri 不好评价你。