题目链接:美味

  如果题目里面没有那个\(a_i\),这道题就可以直接在\(Trie\)树上走一走就做完了。现在多了个\(a_i\),\(Trie\)树就无能为力了。

  我们考虑一下在\(Trie\)树上走的过程。我们从高位往低位按位贪心,每次判定这一位能否取\(1\),本质上就是在判定某个区间内有没有数。所以我们把这个区间弄出来,在主席树上查询一下就可以了。这样就可以把那个\(a_i\)给考虑进来了。

  下面贴代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
#define maxn 200010
#define MAXN 5000010 using namespace std;
typedef long long llg; int n,m,rt[maxn],a[maxn],_m,tt;
int sumv[MAXN],le[MAXN],ri[MAXN],L,R,_sum; int getint(){
int w=0;bool q=0;
char c=getchar();
while((c>'9'||c<'0')&&c!='-') c=getchar();
if(c=='-') c=getchar(),q=1;
while(c>='0'&&c<='9') w=w*10+c-'0',c=getchar();
return q?-w:w;
} int build(int u,int l,int r){
int mid=(l+r)>>1,v=++tt;
le[v]=le[u],ri[v]=ri[u],sumv[v]=sumv[u]+1;
if(l!=r){
if(L<=mid) le[v]=build(le[u],l,mid);
else ri[v]=build(ri[u],mid+1,r);
}
return v;
} void query(int u,int v,int l,int r){
int mid=(l+r)>>1;
if(l>=L && R>=r){_sum+=sumv[v]-sumv[u];return;}
if(L<=mid) query(le[u],le[v],l,mid);
if(R>mid) query(ri[u],ri[v],mid+1,r);
} bool ask(int u,int v,int l,int r){
L=max(l,0); R=min(r,_m);
if(L>R) return 0; _sum=0;
query(rt[u-1],rt[v],0,_m);
return _sum!=0;
} int main(){
File("a");
n=getint(),m=getint();
for(int i=1;i<=n;i++) _m=max(_m,a[i]=getint());
for(int i=1;i<=n;i++) L=a[i],rt[i]=build(rt[i-1],0,_m);
while(m--){
int b=getint(),x=getint();
int l=getint(),r=getint(),ans=0;
for(int i=17;i>=0;i--){
int now=ans+((1^(b>>i&1))<<i);
if(ask(l,r,now-x,now+(1<<i)-1-x)) ans=now;
else ans+=(b>>i&1)<<i;
}
printf("%d\n",ans^b);
}
return 0;
}

BZOJ 4571 【SCOI2016】 美味的更多相关文章

  1. BZOJ 4571: [Scoi2016]美味

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

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

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

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

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

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

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

  5. bzoj4571: [Scoi2016]美味

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

  6. 【bzoj4571&&SCOI2016美味】

    4571: [Scoi2016]美味 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 656  Solved: 350[Submit][Status][ ...

  7. bzoj [Scoi2016]美味

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

  8. [洛谷P3293] [SCOI2016]美味

    洛谷题目链接:[SCOI2016]美味 题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 ...

  9. 【BZOJ4571】[Scoi2016]美味 主席树

    [BZOJ4571][Scoi2016]美味 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期望值 ...

  10. BZOJ 4570: [Scoi2016]妖怪

    二次联通门 : BZOJ 4570: [Scoi2016]妖怪 二次联通门 : luogu P3291 [SCOI2016]妖怪 LibreOJ : LibreOJ  #2015. 「SCOI2016 ...

随机推荐

  1. git更新代码报错,error: The following untracked working tree files would be overwritten by ch

    git忽略大小写导致的, git config --add core.ignorecase true

  2. POJ:Dungeon Master(三维bfs模板题)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16748   Accepted: 6522 D ...

  3. libsvm使用

    先挖个坑,有空重写svm_scale, svm_train, svm_predict几个代码,给的实在写的不敢恭维 package org.ml.svm; import java.io.File; i ...

  4. 接口自动化测试框架搭建 – Java+TestNG 测试Restful service

    接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...

  5. myeclipse连接sql server2008 r2数据库

    我用的myeclipse自带的jdk1.6连接的,所以选用sqljdbc4.jar的jar包,我是win7电脑 之前也看到一些用户留的微软官方连接,但是官方那边已经取消下载了,所以我重新去找了下 链接 ...

  6. MQTT协议学习研究 & Mosquitto简要教程(安装和使用)

    若初次接触MQTT协议,可先理解以下概念: [MQTT协议特点]——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制. [MQTT协议角色]——在RESTfu ...

  7. 分页Bootstrap实现

    <%@ include file="/init.jsp" %> <script type="text/javascript" src=&quo ...

  8. HDU 1392 Surround the Trees(几何 凸包模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1392 题目大意: 二维平面给定n个点,用一条最短的绳子将所有的点都围在里面,求绳子的长度. 解题思路: 凸包的模 ...

  9. 【安装vsftpd】安装vsftpd工具步骤

    1 安装vsftpd组件 [root@bogon ~]# yum -y install vsftpd 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件. 2 添 ...

  10. keras load model 遇到 自定义函数 Lambda(lambda x: softmax(x, axis=1), NameError: global name 'softmax' is not defined

    问题 在定义模型的时候,自定义了一个函数 模型保存之后,load 模型的时候报错: 解决 load 模型的时候需要指定custom object 参考: https://faroit.github.i ...