@[する](/user/243672) 你觉得6.17k人通过的题数据会有问题吗?
by NASFsky @ 2023-07-18 11:09:46
请先在你自己的代码上去找问题。
by NASFsky @ 2023-07-18 11:10:12
@[NASFsky](/user/375403) 为啥m<=5,到line 5k+才报错啊,大佬能不能解决一下
by する @ 2023-07-18 11:13:18
```cpp
#include<bits/stdc++.h>
using namespace std;
int node[14400005][2];
vector<int> v[14400005];
int cnt,n,m;
int a[600005],tmp[14400005],val[14400005],tot,maxi,sum[600005];
void insert(int s,int k,int pos)
{
int now=0;
for(int i=24;i>=0;i--)
{
int c=(s>>i)&1;
if(node[now][c]==0) node[now][c]=++tot;
now=node[now][c];
v[now].push_back(pos);
tmp[now]+=k;
}
val[now]=s;
}
int query(int s,int l,int r)
{
int now=0;
for(int i=24;i>=0;i--)
{
int c=(s>>i)&1;
if(node[now][c^1]!=0&&tmp[node[now][c^1]]!=0)
{
int nxt=node[now][c^1];
int pos=lower_bound(v[nxt].begin(),v[nxt].end(),l)-v[nxt].begin();
if(v[nxt][pos]>=l&&v[nxt][pos]<=r){now=node[now][c^1];continue;}
}
now=node[now][c];
}
return s^val[now];
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum[i]=sum[i-1]^a[i];
insert(sum[i-1],1,i);
}
while(m--)
{
char c;
cin>>c;
if(c=='A')
{
int x;
cin>>x;
a[++n]=x;
sum[n]=sum[n-1]^a[n];
insert(sum[n-1],1,n);
}
else
{
int x,l,r;
cin>>l>>r>>x;
cout<<query(x^sum[n],l,r)<<"\n";
}
}
}
```
by する @ 2023-07-18 11:14:00
和说明提示确实不一样吧,参考[https://www.luogu.com.cn/discuss/632097](https://www.luogu.com.cn/discuss/632097)
~~(不过最大点数据在范围里就算没问题了吧)~~
by 冰糖鸽子 @ 2023-07-18 11:14:30
@[冰糖鸽子](/user/227728) 那没事了,但我觉得这个确实对人误导挺大的
by する @ 2023-07-18 11:19:38
@[する](/user/243672) 召唤啊呀改数据范围了(
by 冰糖鸽子 @ 2023-07-18 11:24:59
远古时期认识(单向)的人怎么都金了。呜呜呜。
by fresh_boy @ 2023-08-26 23:45:29