博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj4571/luogu3293 美味 (主席树+贪心)
阅读量:4692 次
发布时间:2019-06-09

本文共 1352 字,大约阅读时间需要 4 分钟。

首先想到建出可持久化trie树然后在上面贪心,但是它加了一个数所以不能这么做

但依然可以贪心,仿照上面那个的过程,如果设y是在第i位上^b是1的数(前面的位数已经贪好了),我只要在[l,r]范围内能有[y-x,y+(1<<i)-x-1)]的数,那这位异或出来就是可以是1的

1 #include
2 #define pa pair
3 #define CLR(a,x) memset(a,x,sizeof(a)) 4 using namespace std; 5 typedef long long ll; 6 const int maxn=2e5+10,maxp=maxn*20; 7 8 inline ll rd(){ 9 ll x=0;char c=getchar();int neg=1;10 while(c<'0'||c>'9'){
if(c=='-') neg=-1;c=getchar();}11 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();12 return x*neg;13 }14 15 int root[maxn],N,M,L=100000;16 int ch[maxp][2],v[maxp],pct;17 18 void insert(int pre,int &p,int l,int r,int x){19 p=++pct;20 v[p]=v[pre]+1;21 if(l
>1;23 if(x<=m) ch[p][1]=ch[pre][1],insert(ch[pre][0],ch[p][0],l,m,x);24 else ch[p][0]=ch[pre][0],insert(ch[pre][1],ch[p][1],m+1,r,x);25 }26 }27 28 int query(int pre,int p,int l,int r,int x,int y){29 if(x<=l&&r<=y) return v[p]-v[pre];30 int m=l+r>>1,re=0;31 if(x<=m) re=query(ch[pre][0],ch[p][0],l,m,x,y);32 if(y>=m+1) re+=query(ch[pre][1],ch[p][1],m+1,r,x,y);33 return re;34 }35 36 inline int solve(int b,int x,int pre,int p){37 int n=0;38 for(int i=17;i>=0;i--){39 int y=n|((((b>>i)&1)^1)<
>i)&1) n|=(1<

 

转载于:https://www.cnblogs.com/Ressed/p/9782138.html

你可能感兴趣的文章
面试常见问题
查看>>
关于php编写64位扩展的问题
查看>>
[FZYZOJ 1598] & [FZYZOJ 1298] 最大子树和(修剪花卉)
查看>>
关于redis数据库的简单思考
查看>>
mysql localhost与127.0.0.1以及ip连接的区别
查看>>
java第五次作业
查看>>
HNOI2003 消防局的设立
查看>>
BZOJ1055:HAOI2008玩具取名
查看>>
6.while loop
查看>>
delphi 怎样设置组合键
查看>>
sql getdate() 时间格式设置
查看>>
Java 8 Optional类深度解析
查看>>
LSI MegaCl i命令使用1
查看>>
如何正确的关闭 MFC 线程
查看>>
centos 最新版git 致命错误: zlib.h:没有那个文件或目录
查看>>
jenkins全局安全设置
查看>>
RandomAccess接口
查看>>
1502: [NOI2005]月下柠檬树
查看>>
L2_深入虎穴
查看>>
adb shell am 的用法
查看>>