4645. 选数异或
给定一个长度为 n
的数列 A1,A2,⋅⋅⋅,An
和一个非负整数 x
,给定 m
次查询,每次询问能否从某个区间 [l,r]
中选择两个下标不同的数使得他们的异或等于 x
。
输入格式
输入的第一行包含三个整数 n,m,x
。
第二行包含 n
个整数 A1,A2,⋅⋅⋅,An
。
接下来 m
行,每行包含两个整数 li,ri
表示询问区间 [li,ri]
。
输出格式
对于每个询问,如果该区间内存在两个数的异或为 x
则输出 yes,否则输出 no。
数据范围
对于 20%
的评测用例,1≤n,m≤100
;
对于 40%
的评测用例,1≤n,m≤1000
;
对于所有评测用例,1≤n,m≤100000
,0≤x<220
,1≤li≤ri≤n
,0≤Ai<220
。
输入样例:
4 4 1
1 2 3 4
1 4
1 2
2 3
3 3
输出样例:
yes
no
yes
no
样例解释
显然整个数列中只有 2,3
的异或为 1
。
动态规划
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int N=100010;
int dp[N];
map<int,int>last;
int main()
{
int n,m,x;
scanf("%d%d%d",&n,&m,&x);
for(int i=1;i<=n;i++){
int a;
scanf("%d",&a);
dp[i]=max(dp[i-1],last[a^x]);
last[a]=i;
}
for(int i=1;i<=m;i++){
int l,r;
scanf("%d%d",&l,&r);
if(dp[r]>=l) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具