CF--832--D
关键
这美妙的模拟,我写的和屎一样,写了一个小时,都没出来
1.只需要记录前缀就可以了,不需要适用vector进行二分查找
2.只需要看l或r是否为0就可以了,不需要去二分查找
代码
//只需要判断前缀或者后缀的题目,直接记录就行了,二分查找好麻烦的,模拟了半天也每出来 #include <bits/stdc++.h> using namespace std; const int M=2e5+5; int a[M],s[M]; int pre[M]; int cnt[M]; int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; map<int,int>mp[2]; for(int i=1;i<=n;i++) { cin>>a[i]; s[i]=s[i-1]^a[i]; cnt[i]=cnt[i-1]+(a[i]!=0); int x=i%2; if(mp[x^1].count(s[i]))pre[i]=mp[x^1][s[i]]+1;//记录前缀,也就是上一个区间 mp[x][s[i]]=i;//把这个位置进行更新 } for(int i=1;i<=m;i++) { int l,r; cin>>l>>r; if(s[r]^s[l-1])cout<<"-1\n"; else if(cnt[r]==cnt[l-1])cout<<"0\n"; else if((r-l+1)%2==1)cout<<"1\n"; else if(a[l]==0||a[r]==0)cout<<"1\n";//对呀,只需要判断那两个位置就可以了,我真是sb else if(pre[r]>=l)cout<<"2\n"; else cout<<"-1\n"; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现