当前位置: 首页 > news >正文

东莞微信网站建设咨询建站系统源码

东莞微信网站建设咨询,建站系统源码,2017我们一起做网站,外贸公司网站空间[蓝桥杯 2022 省 A] 选数异或 题目描述 给定一个长度为 nnn 的数列 A1,A2,⋯,AnA_{1}, A_{2}, \cdots, A_{n}A1​,A2​,⋯,An​ 和一个非负整数 xxx, 给定 mmm 次查询, 每次询问能否从某个区间 [l,r][l, r][l,r] 中选择两个数使得他们的异或等于 xxx 。 输入格式 输入的第一…

[蓝桥杯 2022 省 A] 选数异或

题目描述

给定一个长度为 nnn 的数列 A1,A2,⋯,AnA_{1}, A_{2}, \cdots, A_{n}A1,A2,,An 和一个非负整数 xxx, 给定 mmm 次查询, 每次询问能否从某个区间 [l,r][l, r][l,r] 中选择两个数使得他们的异或等于 xxx

输入格式

输入的第一行包含三个整数 n,m,xn, m, xn,m,x

第二行包含 nnn 个整数 A1,A2,⋯,AnA_{1}, A_{2}, \cdots, A_{n}A1,A2,,An

接下来 mmm 行,每行包含两个整数 li,ril_{i}, r_{i}li,ri 表示询问区间 [li,ri]\left[l_{i}, r_{i}\right][li,ri]

输出格式

对于每个询问, 如果该区间内存在两个数的异或为 xxx 则输出 yes, 否则输出 no

样例 #1

样例输入 #1

4 4 1
1 2 3 4
1 4
1 2
2 3
3 3

样例输出 #1

yes
no
yes
no

提示

【样例说明】

显然整个数列中只有 2,3 的异或为 1 。

【评测用例规模与约定】

对于 20%20 \%20% 的评测用例, 1≤n,m≤1001 \leq n, m \leq 1001n,m100;

对于 40%40 \%40% 的评测用例, 1≤n,m≤10001 \leq n, m \leq 10001n,m1000;

对于所有评测用例, 1≤n,m≤105,0≤x<220,1≤li≤ri≤n1 \leq n, m \leq 10^5,0 \leq x<2^{20}, 1 \leq l_{i} \leq r_{i} \leq n1n,m105,0x<220,1lirin0≤Ai<2200 \leq A_{i}<2^{20}0Ai<220

蓝桥杯 2022 省赛 A 组 D 题。

分析

A组的题,题目有三种解法,但是这道题无论啥解法,实际上是万变不离其宗的,就是他的关键的对于某个点的预处理。想要解这题主要还是要想出这个处理。之所以写不同的这三种解法,主要是复习一下模板吧
首先,我们容易知道:若a^b=x,那么a^x=b,对于数组a[i],我们可以通过关系式,找到a[i]^x的左边的最靠近下标,明显我们需要找到最靠近的下标,而当这个下标是大于等于所需要找的区间的左端点,即可满足这个区间内可以找到两个数的异或为x。
当对于一个数,其左边没有数与其异或等于x时,那么就将其置为0,而当我们不断输入数字的时候,我们需要同时存储这个数的下标,方便循环到下一个下标的时候找到这个数字(通过a^x=b这样的关系),具体看代码

解法一:线段树

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int t[400005],a[100005],Left[100005],pos[2000005];
inline void buildtree(int k,int l,int r){if(l==r){t[k]=Left[r];return;}int mid=(l+r)>>1;buildtree(k<<1,l,mid),buildtree(k<<1|1,mid+1,r);t[k]=max(t[k<<1],t[k<<1|1]);
}
inline int query(int k,int l,int r,int x,int y){if(l==x&&r==y)return t[k];int mid=(l+r)>>1;if(y<=mid)return query(k<<1,l,mid,x,y);elseif(x>mid)return query(k<<1|1,mid+1,r,x,y);else return max(query(k<<1,l,mid,x,mid),query(k<<1|1,mid+1,r,mid+1,y));
}
int main(){int n,m,x;cin>>n>>m>>x;for(int i=1;i<=n;++i){scanf("%d",&a[i]);Left[i]=pos[a[i]^x];pos[a[i]]=i;}buildtree(1,1,n);while(m--){int x,y;scanf("%d%d",&x,&y);int k=query(1,1,n,x,y);if(k>=x)printf("yes\n");else printf("no\n");}
}

解法二:DP

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int f[100005],pos[5000005];
int main(){int n,m,x;cin>>n>>m>>x;for(int i=1;i<=n;++i){int a;scanf("%d",&a);f[i]=max(f[i-1],pos[a^x]);pos[a]=i;}while(m--){int l,r;scanf("%d%d",&l,&r);if(f[r]>=l)printf("yes\n");else printf("no\n");}
}

解法三:ST表

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int st[100005][20],pos[5000005];
int main(){int n,m,x;cin>>n>>m>>x;for(int i=1;i<=n;++i){int a;scanf("%d",&a);st[i][0]=pos[a^x];pos[a]=i;}int k=log2(n);for(int i=1;i<=k;++i)for(int j=1;j+(1<<i)-1<=n;++j)st[j][i]=max(st[j][i-1],st[j+(1<<(i-1))][i-1]);while(m--){int l,r;scanf("%d%d",&l,&r);int len=log2(r-l+1);int p=max(st[l][len],st[r-(1<<len)+1][len]);if(p>=l)printf("yes\n");else printf("no\n");}
}
http://www.mmbaike.com/news/37159.html

相关文章:

  • 宁河网站建设关键词优化推广排名多少钱
  • 网站设计好做吗百度广告价格
  • 公司注销后 网站备案吗网络营销试卷及答案
  • 环球广贸WordPress汕头seo网站推广
  • 用vs2008做网站视频教程长沙有实力的关键词优化价格
  • 网站设计论文题目2345中国最好的网址站
  • 建设网站所需资料安卓优化大师旧版本
  • 顺义广州网站建设女教师网课入06654侵录屏
  • 游戏娱乐网站建设seo经典案例分析
  • 昆山玉山网站建设拼多多商品关键词搜索排名
  • 建设一个能看视频的网站seo排名工具哪个好
  • 永泰县住房和城乡建设局网站西安分类信息seo公司
  • vs做网站怎么调试seo关键词怎么选择
  • 福田商城网站建设哪家公司靠谱做网络推广有哪些平台
  • 首京建设投资引导基金网站宝安网站建设
  • 做政务网站数据分析培训机构哪家好
  • 多语言做网站百度福州分公司
  • 国内有哪些比较好的做定制旅游网站百度热搜关键词排名优化
  • 重庆做网站开发的公司有哪些苏州整站优化
  • jsp编写网站google推广怎么做
  • 做网站常用的css关键词营销推广
  • 中国建设部官方网站郑州百度关键词seo
  • 网站开发人员 kpi指标西安seo关键词排名
  • 用于手机的导航网站要怎么做咨询网络服务商
  • wordpress 卸载plugin提高seo关键词排名
  • 做网站不要盲目跟风武汉十大技能培训机构
  • 对政府门户网站建设的见解长沙seo运营
  • 园林古建设计网站seo公司培训课程
  • 鹤岗哈尔滨网站建设免费网站生成器
  • 网站服务器建立门户网站建站系统