12.24
上午
继续看昨天huge给的视频并尝试写最大异或和,wa了半天发现是maxn[0]没有初始化,6
虽然感觉没人看,但是为了凑字数还是贴上代码吧
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=6e5+10,M=N*25;
int n,m,tot,s[N];
int trie[M][2],maxn[M],root[M];
inline void insert(int x,int k,int la,int now)
{
if(k<0)
{
maxn[now]=x;
return ;
}
int v=s[x]>>k&1;
if(la)
trie[now][v^1]=trie[la][v^1];
trie[now][v]=++tot;
insert(x,k-1,trie[la][v],trie[now][v]);
maxn[now]=max(maxn[trie[now][0]],maxn[trie[now][1]]);
return ;
}
inline int query(int x,int k,int now,int l)
{
if(k<0)
return s[maxn[now]]^x;
int v=x>>k&1;
if(maxn[trie[now][v^1]]>=l)
return query(x,k-1,trie[now][v^1],l);
return query(x,k-1,trie[now][v],l);
}
int main()
{
cin>>n>>m;
root[0]=++tot;
maxn[0]=-1;
insert(0,23,0,root[0]);
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
s[i]=s[i-1]^x;
root[i]=++tot;
insert(i,23,root[i-1],root[i]);
}
char c[2];
int x,l,r;
while(m--)
{
scanf("%s",c);
if(*c=='A')
{
scanf("%d",&x);
n++;
s[n]=s[n-1]^x;
root[n]=++tot;
insert(n,23,root[n-1],root[n]);
}
else
{
scanf("%d%d%d",&l,&r,&x);
printf("%d\n",query(s[n]^x,23,root[r-1],l-1));
}
}
return 0;
}
然后就只凑了一行(不对,算上这行就有两行了)
然后一上午就过去了,在校oj上新开了道题,有点思路但是肯定写不完了
然后就看【数据删除】(保护个人隐私,从我做起)在颓【数据删除】,有实力的,看的我都想打⚪了,但是我更不想趋势
零基础的大哥们不知道用什么办法给笔趣阁打开看小说,还有玩模拟抽卡的,还有啥三子棋,太闲了导致的,感觉要颓就颓,不如【数据删除】
顺带一提,JD换头像了,我刚开始以为他是要换博客园的,没想到给luogu的换了,不好评价(不过我本来好像也不该评价
看着luotianyi爆切一吨AC自动机紫题,%%%
。闲话要写不完了,但是谷哥就在机房前面坐着,那我就赌他会去看【数据删除】而不是我
“下午由于学校安排又要去那个教室写文化课,真亏他们想的出来,怎么说都写不完那么多东西吧”
以上是我的想法
然后就有人说“啊老师老师,我要是写完了能不能来机房啊”
我承认给我听傻了,哥们哪的挂介绍一下
好图