「LibreOJ β Round #2」计算几何瞎暴力 (0/1 trie)
传送门
写到一半发现出问题了
#include#define cs constusing namespace std;cs int N = 2e5 + 5;typedef long long ll;int read(){ int cnt = 0, f = 1; char ch = 0; while(!isdigit(ch)){ ch = getchar(); if(ch == '-') f = -1; } while(isdigit(ch)) cnt = cnt*10 + (ch-'0'), ch = getchar(); return cnt * f; }int n, m, rt, Xor, Sor;int b[N], sm[N][32], sz;namespace T{ cs int N = ::N*30; int ch[N][2],sz[N],nd,sm[N][32]; void ins(int &x, int v, int i){ if(!x) x=++nd; ++sz[x]; for(int j=0; j<=30; j++) sm[x][j]+=(v>>j&1); if(i<0) return; int c=v>>i&1; ins(ch[x][c],v,i-1); } ll ask(int x, int k, int i){ if(!k||!x) return 0; if(i<0){ ll ans=0; for(int j=0; j<=30; j++){ if((Xor>>j&1)^(sm[x][j]>0)) ans+=(ll)k<>i&1, vl=sz[ch[x][c]]; if(k>j&1) ans+=(ll)(sz[ch[x][c]]-sm[ch[x][c]][j])<>i&1) ans+=(ll)(x-sm[x][i])<>i&1);}void Sort(){ for(int i=1; i<=sz; i++) T::ins(rt,b[i],30), ++n; sz = 0; Sor = Xor;}int main(){ sz=read(); for(int i=1; i<=sz; i++) b[i]=read(),upt(i); m=read(); while(m--){ int op = read(); if(op==1) b[++sz]=read()^Xor, upt(sz); if(op==2){ int l=read(), r=read(); cout<
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~