洛谷$P$3293 美味 $[SCOI2016]$ 主席树
正解:主席树
解题报告:
挺有趣的,至少我不会$QAQ$(虽然我不会的多了去了$QAQ$
如果没有这个所谓美味度限制可以直接线段树水过去嘛$QwQ$
然后现在问的是个异或运算后的结果,关于异或运算,然后还询问最大值,显然就很容易联想到,最大异或和
考虑把每个数做成二进制的形式,然后处理到第$i$位了,设做到第$i+1$位的时候确定的$maxans=as$,然后强制要求这一位是0(是1差不多的思考,一样儿的都$QwQ$),那就相当于是要求是否存在$[ans-x_{i},ans-x_{i}+2^{i})$这个范围内的数昂
这时候依然是线段树能水过去昂,权值线段树就好$QwQ$,然后这时候发现还有一个数据范围的限制$[l,r]$,那不就改成主席树就做完了嘛$QwQ$
#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=1e5+;
int n,m,rt[N<<],nod_cnt;
struct node{int l,r,num;}tr[N<<]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
int modify(ri d,ri l,ri r,ri dat)
{
ri nw=++nod_cnt;tr[nw]=tr[d];if(l==r)return ++tr[nw].num,nw;
ri mid=(l+r)>>;mid>=dat?tr[nw].l=modify(tr[d].l,l,mid,dat):tr[nw].r=modify(tr[d].r,mid+,r,dat);
tr[nw].num=tr[tr[nw].l].num+tr[tr[nw].r].num;return nw;
}
bool query(ri rt_l,ri rt_r,ri l,ri r,ri to_l,ri to_r)
{
if(to_l<=l && r<=to_r){return tr[rt_r].num-tr[rt_l].num;}
ri mid=(l+r)>>;
if(to_l<=mid)if(query(tr[rt_l].l,tr[rt_r].l,l,mid,to_l,to_r))return ;
if(to_r>mid)if(query(tr[rt_l].r,tr[rt_r].r,mid+,r,to_l,to_r))return ;
return ;
} int main()
{
//freopen("3293.in","r",stdin);freopen("3293.out","w",stdout);
n=read();m=read();rp(i,,n)rt[i]=modify(rt[i-],,N-,read());
while(m--)
{
ri b=read(),x=read(),l=read()-,r=read(),as=,ll,rr;
my(i,,)
{
ri g;
if(b&(<<i))ll=max(,as-x),rr=min(as+(<<i)--x,N-),g=;
else ll=max(,as+(<<i)-x),rr=min(as+(<<(i+))--x,N-),g=;
if(!query(rt[l],rt[r],,N-,ll,rr))g^=;
as+=g<<i;
}
printf("%d\n",as^b);
}
return ;
}
洛谷$P$3293 美味 $[SCOI2016]$ 主席树的更多相关文章
- 洛谷P2617 Dynamic Ranking(主席树,树套树,树状数组)
洛谷题目传送门 YCB巨佬对此题有详细的讲解.%YCB%请点这里 思路分析 不能套用静态主席树的方法了.因为的\(N\)个线段树相互纠缠,一旦改了一个点,整个主席树统统都要改一遍...... 话说我真 ...
- 洛谷P4587 神秘数 [FJOI2016] 主席树
正解:主席树 解题报告: 先放下传送门QAQ 首先可以先思考如果只有一组询问,怎么解决 可以这么想,最开始一个数也麻油的时候能表示的最大的数是0嘛 然后先排个序,按顺序每次新加入一个数x,设加入这个数 ...
- 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)
传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...
- 2018.07.07 洛谷 P3939 数颜色(主席树)
P3939 数颜色 题目背景 大样例下发链接:http://pan.baidu.com/s/1c0LbQ2 密码:jigg 题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的.每只兔子都有一种颜色,不 ...
- 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]
题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...
- 洛谷P4559 [JSOI2018]列队(主席树)
题面 传送门 题解 首先考虑一个贪心,我们把所有的人按\(a_i\)排个序,那么排序后的第一个人到\(k\),第二个人到\(k+1\),...,第\(i\)个人到\(k+i-1\),易证这样一定是最优 ...
- 洛谷P3293 [SCOI2016]美味(主席树)
传送门 据说这题做法叫做可持久化trie树?(然而我并不会) 首先考虑一下贪心,从高位到低位枚举,如果能选1肯定比选0优 假设已经处理到了$b$的第$i$位,为1(为0的话同理就不说了) 那么只有当$ ...
- 洛谷$P$3241 开店 $[HNOI2015]$ 主席树/点分治
正解:主席树/动态点分治 解题报告: 传送门! $umm$淀粉质的话要是动态的我还不会$QAQ$,,,所以先写下主席树的题解昂$QwQ$ 题目大意是说,给定一棵树,树上每个点都有个值,然后有若干个询问 ...
- 洛谷 P4755 - Beautiful Pair(主席树+分治+启发式优化)
题面传送门 wssb,我紫菜 看到这类与最大值统计有关的问题可以很自然地想到分治,考虑对 \([l,r]\) 进行分治,求出对于所有 \(l\le x\le y\le r\) 的点对 \((x,y)\ ...
随机推荐
- oracle函数 TRIM(c1 from c2)
[功能]删除左边和右边出现的字符串 [参数]C2 删除前字符串 c1 删除字符串,默认为空格 [返回]字符型 [示例] select TRIM('X' from 'XXXgao qian jingXX ...
- SDUT-2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式
数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 对于一个基于二元运 ...
- HZOJ 砍树
考试时打了个暴力T40,正解是整除分块???完全没听过……而且这题居然还有人A了…… 整除分块 暴力就不说了,直接上正解: 将d除过去,右边向下取整(显然不能向上取整啊,会超k的)这个不用处理,整除就 ...
- iPhone:constrainedToSize获取字符串的宽高
在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法. 1.获取宽度,获取字符串不折行单行显示时所需要的长度 CGSize titleSize = [aSt ...
- 深度学习——Xavier初始化方法
“Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...
- 2018-2-13-win10-uwp-ContentDialog-点确定不关闭
title author date CreateTime categories win10 uwp ContentDialog 点确定不关闭 lindexi 2018-2-13 17:23:3 +08 ...
- H3C NAT的信息显示和调试
- H3C ACL规则的匹配顺序
- H3C IPv6邻居发现协议
- H3C 示例:根据主机地址数划分子网