2018.10.14 bzoj4571: [Scoi2016]美味(主席树)
传送门
自认为是一道思想很妙的题。
直接分析问题。
如果没有xxx的干扰直接上可持久化01trie01trie01trie走人。
但现在有了xxx这个偏移量。
相当于把整个01trie01trie01trie向左平移了xxx。
这个感觉01trie01trie01trie维护不是很可做。
于是我们把可持久化01trie01trie01trie转成主席树。
发现只是把选择左/右子树变成了选择左/右半区间。
然后照样贪心查询就行了。
代码:
#include<bits/stdc++.h>
#define N 200005
#define M 100005
#define P 17
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
int rt[N],son[N*30][2],siz[N*30],n,m,a[N],tot=0;
inline void update(int&p,int las,int l,int r,int k){
p=++tot,son[p][0]=son[las][0],son[p][1]=son[las][1],siz[p]=siz[las]+1;
if(l==r)return;
int mid=l+r>>1;
if(k<=mid)update(son[p][0],son[las][0],l,mid,k);
else update(son[p][1],son[las][1],mid+1,r,k);
}
inline int query(int pl,int pr,int l,int r,int ql,int qr){
if(ql>r||qr<l)return 0;
if(ql<=l&&r<=qr)return siz[pr]-siz[pl];
int mid=l+r>>1;
if(qr<=mid)return query(son[pl][0],son[pr][0],l,mid,ql,qr);
if(ql>mid)return query(son[pl][1],son[pr][1],mid+1,r,ql,qr);
return query(son[pl][0],son[pr][0],l,mid,ql,mid)+query(son[pl][1],son[pr][1],mid+1,r,mid+1,qr);
}
inline int query(int l,int r,int val,int dta){
int ret=0,xortmp=0;
for(int i=P;~i;--i){
int tmp=1<<i;
if(val&tmp)if(query(rt[l-1],rt[r],1,200000,xortmp-dta,xortmp+tmp-dta-1))ret|=tmp;else xortmp|=tmp;
else if(query(rt[l-1],rt[r],1,200000,xortmp+tmp-dta,xortmp+tmp*2-dta-1))ret|=tmp,xortmp|=tmp;
}
return ret;
}
int main(){
n=read(),m=read();
for(int i=1;i<=n;++i)update(rt[i],rt[i-1],1,200000,(a[i]=read()));
for(int i=1,b,x,l,r;i<=m;++i)b=read(),x=read(),l=read(),r=read(),printf("%d\n",query(l,r,b,x));
return 0;
}
2018.10.14 bzoj4571: [Scoi2016]美味(主席树)的更多相关文章
- BZOJ4571:[SCOI2016]美味(主席树,贪心)
Description 一家餐厅有 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 位顾客的期望值 ...
- bzoj 4571: [Scoi2016]美味 (主席树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 题面; 4571: [Scoi2016]美味 Time Limit: 30 Sec ...
- BZOJ.4571.[SCOI2016]美味(主席树 贪心)
题目链接 要求 \(b\ xor\ (a_j+x)\) 最大,应让 \(a_j+x\) 的最高位尽可能与b相反.带个减法Trie树好像很难做?反正我不会. 从最高位开始,如果这位b是0/1,判断是否存 ...
- P3293 [SCOI2016]美味 主席树+按位贪心
给定长度为 \(n\) 序列 \(a[i]\) ,每次询问区间 \([l,r]\) ,并给定 \(b,x\) 中的一个数 \(p=a[i]\) ,使得最大化 \(b \bigoplus p^x\) 主 ...
- 2018.10.31 bzoj3339&&3585mex(主席树)
传送门 双倍经验 直接上主席树,每个叶节点维护这个值出现的最右区间,非叶子节点维护当前值域内所有最右区间的最小值. 查询的时候只用在以root[qr]root[qr]root[qr]为根的树上面二分. ...
- [SCOI2016]美味——主席树+按位贪心
原题戳这里 题解 让异或值最大显然要按位贪心,然后我们还发现加上一个\(x_i\)的效果就是所有\(a_i\)整体向右偏移了,我们对于\({a_i}\)开个主席树,支持查询一个区间中有多少个在\([L ...
- BZOJ4517[Scoi2016]美味——主席树
题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 bi,而他的偏好值为 xi .因此,第 i 位顾客认为 ...
- bzoj4571/luogu3293 美味 (主席树+贪心)
首先想到建出可持久化trie树然后在上面贪心,但是它加了一个数所以不能这么做 但依然可以贪心,仿照上面那个的过程,如果设y是在第i位上^b是1的数(前面的位数已经贪好了),我只要在[l,r]范围内能有 ...
随机推荐
- DDoS攻防战 (一) : 概述
岁寒 然后知松柏之后凋也 ——论语·子罕 (此图摘自<Web脚本攻击与防御技术核心剖析>一书,作者:郝永清先生) DDoS,即 Distributed Denial of Servi ...
- 如何使用Python快速制作可视化报表----pyecharts
如何使用Python快速制作可视化报表 数据可视化能力已经越来越成为各岗位的基础技能.领英的数据报告显示,数据可视化技能在2017年中国最热门技能中排名第一. 就数据分析而言,可视化探索几乎是你正 ...
- 解决打开visio2013提示windows正在配置的问题
由于之前装过office2007.也装过2010版本.新安装visio2013就会出现如下情况 解决办法: 主要是要清理完visio2010及之前的那些没用选项 1.在cmd命令下打开regedit注 ...
- Maven打包跳过测试,文档生成
运行mvn install时跳过Test 方法一: <project> [...] <build> <plugins> <plugin> <gro ...
- 前端-CSS-3-高级选择器
高级选择器 总结: <!-- 总结: 基础选择器: 1.标签选择器 div 2.类选择器 .div1 3.id选择器 #box 4.通配符选择器 * 高级选择器: 1.群组选择器 中间用, .t ...
- ABAP-关于COMMIT WORK 和COMMIT WORK AND WAIT
转载:https://blog.csdn.net/champaignwolf/article/details/6925019 首先说明一点:更新是异步的,更新是由SAP中UPD1和UPD2两个进程执行 ...
- C++17尝鲜:在 if 和 switch 语句中进行初始化
初始化语句 在C++17中,类似于 for 语句,在 if 和 switch 语句的判断条件之前也能加上初始化语句,语法形式如下: if (初始化语句; 条件) 语句 else 语句 switch ( ...
- Hibernate 的Ehache学习
Hibernate默认二级缓存是不启动的,启动二级缓存(以EHCache为例)需要以下步骤: 1.添加相关的包: Ehcache.jar和commons-logging.jar,如果hibernate ...
- 启用SQL Server 2008的专用管理员连接(DAC)
参考:http://technet.microsoft.com/zh-cn/library/ms178068(v=SQL.105).aspx 问题: 一个在我们公司实习的DBA向我询问如何开启SQL ...
- js中定时器2
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...