又一部SCOI血泪史。。。。

唉。

就是在这棵树上一遍又一遍跑嘛。

以后不要直接求答案啊。要最后再异或起来。

要学习简单的代码风格。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 200500
#define maxm 4005000
#define inf 262143
using namespace std;
int n,m,a[maxn],root[maxn],tot=,tree[maxm][],sum[maxm];
int b,x,l,r;
void insert(int last,int &now,int left,int right,int p)
{
now=++tot;
tree[now][]=tree[last][];tree[now][]=tree[last][];
sum[now]=sum[last]+;
if (left==right) return;
int mid=(left+right)>>;
if (p<=mid) insert(tree[last][],tree[now][],left,mid,p);
else insert(tree[last][],tree[now][],mid+,right,p);
}
bool query(int last,int now,int left,int right,int l,int r)
{
if ((left==l) && (right==r))
return sum[now]-sum[last]>;
int mid=(left+right)>>;
if (r<=mid) return query(tree[last][],tree[now][],left,mid,l,r);
else if (l>=mid+) return query(tree[last][],tree[now][],mid+,right,l,r);
else return query(tree[last][],tree[now][],left,mid,l,mid)||query(tree[last][],tree[now][],mid+,right,mid+,r);
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
for (int i=;i<=n;i++)
insert(root[i-],root[i],,inf,a[i]);
for (int i=;i<=m;i++)
{
scanf("%d%d%d%d",&b,&x,&l,&r);
int ans=;
for (int d=;d>=;d--)
{
int tmp=b&(<<d);
if (tmp)
{
int ll=max(ans-x,),rr=min(ans+(<<d)--x,inf);
if (!query(root[l-],root[r],,inf,ll,rr)) ans^=(<<d);
}
else
{
ans^=(<<d);
int ll=max(ans-x,),rr=min(ans+(<<d)-x-,inf);
if (!query(root[l-],root[r],,inf,ll,rr)) ans^=(<<d);
}
}
printf("%d\n",b^ans);
}
return ;
}

BZOJ 4571 美味的更多相关文章

  1. bzoj 4571 美味 —— 主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 区间找异或值最大,还带加法,可以用主席树: 可以按位考虑,然后通过加上之前已经有的答案 ...

  2. BZOJ 4571: [Scoi2016]美味

    二次联通门 : BZOJ 4571: [Scoi2016]美味 /* BZOJ 4571: [Scoi2016]美味 dalao们都在说这题如果没有加法balabala就可以用可持久化trie解决了 ...

  3. bzoj 4571: [Scoi2016]美味 (主席树)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 题面; 4571: [Scoi2016]美味 Time Limit: 30 Sec   ...

  4. BZOJ 4571 【SCOI2016】 美味

    题目链接:美味 如果题目里面没有那个\(a_i\),这道题就可以直接在\(Trie\)树上走一走就做完了.现在多了个\(a_i\),\(Trie\)树就无能为力了. 我们考虑一下在\(Trie\)树上 ...

  5. 【BZOJ 4571】【SCOI 2016】美味

    http://www.lydsy.com/JudgeOnline/problem.php?id=4571 这道题因为有加法,不能像可持久化trie那样每次判断只判断一个子树,而是在主席树上查询\(\l ...

  6. bzoj 4571 [Scoi2016]美味——主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 按位考虑,需要的就是一个区间:比如最高位就是(2^k -x). 对于不是最高位的位置该 ...

  7. BZOJ.4571.[SCOI2016]美味(主席树 贪心)

    题目链接 要求 \(b\ xor\ (a_j+x)\) 最大,应让 \(a_j+x\) 的最高位尽可能与b相反.带个减法Trie树好像很难做?反正我不会. 从最高位开始,如果这位b是0/1,判断是否存 ...

  8. bzoj [Scoi2016]美味

    [Scoi2016]美味 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 721  Solved: 391[Submit][Status][Discus ...

  9. bzoj4571: [Scoi2016]美味

    4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 275 Solved: 141 [Submit][Status][ ...

随机推荐

  1. 用VBS将PPT转为图片

    '使用方法:把ppt文件拖放到该文件上. '机器上要安装Powerpoint程序 On Error Resume Next Set ArgObj = WScript.Arguments pptfile ...

  2. 一个轻量级的3D CSS 库

    JavaScript 3D library 该项目的目的是为了打造轻量级的.实用简单的3D CSS库. Usage使用方法 下载 minified库文件 和 css文件,并将其包含于你的HTML中,就 ...

  3. (10)nehe教程4--旋转

    旋转: 在这一课里,我将教会你如何旋转三角形和四边形.左图中的三角形沿Y轴旋转,四边形沿着X轴旋转. 上一课中我教给您三角形和四边形的着色.这一课我将教您如何将这些彩色对象绕着坐标轴旋转.其实只需在上 ...

  4. android模拟器(genymotion)+appium+python 框架执行过程中问题解答

    1.case运行过程中中文输入不进去? 答:注意事项 1)需要修改系统编码为utf-8,才能解决中文输入问题,case执行入口文件添加代码如下: import sys reload(sys) sys. ...

  5. HDFS Protocol修改流程

        相对于1.x版本的Hadoop,2.x版本的Hadoop采用了Protocol Buffer作为序列化反序列化工具,以及RPC通讯工具.这样当我们对Hadoop源码进行修改之前,就需要了解Ha ...

  6. lintcode :最长公共子串

    题目 最长公共子串 给出两个字符串,找到最长公共子串,并返回其长度. 样例 给出A=“ABCD”,B=“CBCE”,返回 2 注意 子串的字符应该连续的出现在原字符串中,这与子序列有所不同. 解题 注 ...

  7. Android核心分析之十六Android电话系统-概述篇

    Android电话系统之概述篇 首先抛开Android的一切概念来研究一下电话系统的最基本的描述.我们的手机首先用来打电话的,随后是需要一个电话本,随后是PIM,随后是网络应用,随后是云计算,随后是想 ...

  8. LoadRunner8 安装步骤

    一.介绍 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.企业使用L ...

  9. Java-马士兵设计模式学习笔记-观察者模式-OOD 封装event

    把小孩醒来时的具体情况封装成事件类 Test.java class WakenUpEvent{ private long time; private String location; private ...

  10. Centos环境下部署游戏服务器-SVN

    版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...