【bzoj4571】美味
Solution
emmm持续智力康复。。
虽然说因为统计的是加上\(x\)的跟\(b\)异或的最大值所以可持久化trie用不了了
但是按位贪心的思想还是非常ok的
然后又因为权值范围比较小,那就权值线段树然后可持久化一下,对于一个查询\(b\),我们从高位到低位枚举每一位,对于当前枚举到的第\(j\)位,先确定一个范围,这个范围内的任意一个数\(i\)加上\(x\)后都满足\(i\)^\(b\)的结果的第\(j\)位为1,然后我们在这个范围内的主席树上查一下有没有在这个区间内的数,有的话就说明这位可以满足异或后为\(1\),搞到答案里面去,否则就不能为\(1\),不管,然后接着枚举下一位,总的复杂度\(O(nlog^2n)\)
(其实就是。。把按位贪心的过程从trie上面搬到了主席树上。。)
代码大概长这个样子
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2*(1e5)+10,SEG=N*20,MX=N,TOP=20;
int a[N];
int n,m,mx,L,R;
namespace Seg{/*{{{*/
int ch[SEG][2],sum[SEG],rt[N];
int n,tot;
void init(int _n){n=_n; tot=0;}
int newnode(int pre){
ch[++tot][0]=ch[pre][0]; ch[tot][1]=ch[pre][1]; sum[tot]=sum[pre];
return tot;
}
void _insert(int pre,int &x,int d,int lx,int rx){
x=newnode(pre);
++sum[x];
if (lx==rx) return;
int mid=lx+rx>>1;
if (d<=mid) _insert(ch[pre][0],ch[x][0],d,lx,mid);
else _insert(ch[pre][1],ch[x][1],d,mid+1,rx);
}
void insert(int pre,int x,int d){_insert(rt[pre],rt[x],d,1,n);}
bool _query(int L,int R,int l,int r,int lx,int rx){
if (!R) return 0;
if (l<=lx&&rx<=r) return (sum[R]-sum[L])>0;
int mid=lx+rx>>1,ret=0;
if (l<=mid) ret|=_query(ch[L][0],ch[R][0],l,r,lx,mid);
if (r>mid) ret|=_query(ch[L][1],ch[R][1],l,r,mid+1,rx);
return ret;
}
bool query(int tL,int tR,int l,int r){return _query(rt[tL-1],rt[tR],l,r,1,n);}
}/*}}}*/
int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
int b,x,l,r,tmp;
scanf("%d%d",&n,&m);
Seg::init(MX);
for (int i=1;i<=n;++i){
scanf("%d",a+i);
Seg::insert(i-1,i,a[i]);
}
for (int i=1;i<=m;++i){
scanf("%d%d%d%d",&b,&x,&l,&r);
tmp=0;
for (int j=TOP;j>=0;--j){
if (b>>j&1){
L=max(0,tmp-x); R=(tmp|((1<<j)-1))-x;
if (R<0||!Seg::query(l,r,L,R)) tmp^=(1<<j);
}
else{
L=max(0,(tmp^(1<<j))-x); R=((tmp^(1<<j))|((1<<j)-1))-x;
if (R<0||!Seg::query(l,r,L,R)) continue;
else tmp^=(1<<j);
}
}
printf("%d\n",tmp^b);
}
}
【bzoj4571】美味的更多相关文章
- 【BZOJ4571】美味(主席树)
[BZOJ4571]美味(主席树) 题面 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 ...
- 【bzoj4571 scoi2016】美味
题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 ...
- 【BZOJ4571】[Scoi2016]美味 主席树
[BZOJ4571][Scoi2016]美味 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期望值 ...
- bzoj4571: [Scoi2016]美味
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 275 Solved: 141 [Submit][Status][ ...
- 【bzoj4571&&SCOI2016美味】
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 656 Solved: 350[Submit][Status][ ...
- BZOJ4571:[SCOI2016]美味(主席树,贪心)
Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi . 因此,第 ...
- [BZOJ4571][SCOI2016]美味(贪心+主席树)
经典问题,按位贪心,每次需要知道的是”在这一位之前的位都以确定的情况下,能否找到这一位是0/1的数”,这就是在询问[L,R]内某个值域区间是否有数,主席树即可. #include<cstdio& ...
- BZOJ4571: [Scoi2016]美味【主席树】【贪心】
Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 bi,而他的偏好值为 xi .因此,第 ...
- BZOJ4571:[SCOI2016]美味——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4571 https://www.luogu.org/problemnew/show/P3293 一家 ...
随机推荐
- VIN码识别/车架号识别独家支持云识别
VIN码(车架号)对于懂车的人来说并不陌生,不要小看这一串字符,从VIN码中可以读懂车辆的生产厂家.年代.车型.车身型式及代码.发动机代码及组装地点等信息. 一辆汽车的VIN码也是车辆的唯一身份证明, ...
- hession矩阵的计算与在图像中的应用
参考的一篇博客,文章地址:https://blog.csdn.net/lwzkiller/article/details/55050275 Hessian Matrix,它有着广泛的应用,如在牛顿方法 ...
- fetch上传文件报错的问题(multipart: NextPart: EOF)
技术栈 后台: gin(golang) 前端: react+antd+dva 问题 前端这边使用fetch发送http请求的时候,后端解析formData报错: multipart: NextPart ...
- Amazon - removed your selling privileges and placed a temporary hold on any funds - 1
Hello, We are writing to let you know that we have removed your selling privileges and placed a temp ...
- java-sun.misc.BASE64Decode AccessException
在使用sun.misc中base64类时,eclipse可能会报找不到Access异常 只需要修改一下访问方式即可,如下: 右键项目->属性->Javabulid path->jre ...
- php分页类学习
分页是目前在显示大量结果时所采用的最好的方式.有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据.在互联网上,分页是一般用于搜索结果或是浏览全部信息(比如:一个论坛主题).几乎在每一个W ...
- 第17次Scrum会议(10/29)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/29 17:20~17:42,总计22min.地点:东北师 ...
- HDU 5191 Building Blocks
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5191 bc(中文):http://bestcoder.hdu.edu.cn/contests ...
- Mac10.11.2 Apache 服务配置
系统默认是隐藏apache安装目录的,但我们可以通过“命令行”或者“文件夹前往”的方式找到它.它是安装在系统的私有目录下,也就是/private/etc下面,因为它是隐藏的,所以我们无法通过界面找到它 ...
- OSG学习:LOD、数据分页、动态调度
LOD(level of detail):是指根据物体模型的结点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算.在OSG的场景结点组织结 ...