题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571

区间找异或值最大,还带加法,可以用主席树;

可以按位考虑,然后通过加上之前已经有的答案、减去题目给的那个 x ,得到满足这一位最大的值的范围,查找一下有没有即可;

注意如果写 b&(1<<j) ,这个不仅是 0 或 1!所以用个 bool 类型存下来。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mid ((l+r)>>1)
using namespace std;
int const xn=2e5+,mx=(<<)-,xm=xn*;
int n,m,cnt,sum[xm],ls[xm],rs[xm],rt[xn];
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return f?ret:-ret;
}
void insert(int &x,int y,int l,int r,int v)
{
x=++cnt;
sum[x]=sum[y]+; ls[x]=ls[y]; rs[x]=rs[y];
if(l==r)return;
if(v<=mid)insert(ls[x],ls[y],l,mid,v);
else insert(rs[x],rs[y],mid+,r,v);
}
int query(int x,int y,int l,int r,int L,int R)
{
if(l>=L&&r<=R)return sum[y]-sum[x];
int ret=;
if(mid>=L)ret+=query(ls[x],ls[y],l,mid,L,R);
if(mid<R)ret+=query(rs[x],rs[y],mid+,r,L,R);
return ret;
}
int main()
{
n=rd(); m=rd();
for(int i=,x;i<=n;i++)
{
x=rd();
insert(rt[i],rt[i-],,mx,x);
}
for(int i=,b,x,l,r,ans;i<=m;i++)
{
b=rd(); x=rd(); l=rd(); r=rd(); ans=;
for(int j=;j>=;j--)
{
int L,R; bool k=(b&(<<j));//bool!!
if(k)//这一位应填0
L=max(ans-x,),R=min(ans-x+(<<j)-,mx);
else L=max(ans-x+(<<j),),R=min(ans-x+(<<(j+))-,mx);
if(L<=R&&query(rt[l-],rt[r],,mx,L,R))ans+=(<<j)*(k^);
else ans+=(<<j)*k;
}
printf("%d\n",ans^b);
}
return ;
}

最新文章

  1. MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)
  2. Prim 最小生成树算法
  3. js事件模型与自定义事件
  4. float 的有效数字为七位是怎么得出来的
  5. Vim入门教程
  6. sublime2配置python环境
  7. 深度学习研究理解5:Visualizing and Understanding Convolutional Networks(转)
  8. C++描述基础算法之直接插入排序
  9. 腾讯2014在广州站实习生offer经验(TEG-开发背景)
  10. C语言和C++篇
  11. java学习笔记 --- java基础语法
  12. appium+python测试app使用相对坐标定位元素
  13. linux ssh和scp消除每次问yes/no
  14. 122A
  15. HDU2955 01背包
  16. JavaScript中的单例模式
  17. Android 开发工具类 13_ SaxService
  18. java基础语法this关键字
  19. Ubuntu16.04 JAVA配置!
  20. Bower和Gulp集成前端资源

热门文章

  1. BZOJ 3721: PA2014 Final Bazarek【乱搞】
  2. redis哨兵模式配置
  3. 前端学习之-- JavaScript
  4. [bzoj4199][Noi2015]品酒大会_后缀自动机_后缀树_树形dp
  5. 学习日常笔记&lt;day13&gt;jsp加强
  6. Android双向seekbar(带刻度)
  7. 【OpenGL】Shader实例分析(七)- 雪花飘落效果
  8. 微信小程序实战之 goods(订餐页)
  9. 使用RNN解决句子对匹配问题的常见网络结构
  10. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑