题目描述

P哥现在有n个桶,他们排成了一排,这些桶可以装下任意多个女朋友。每个女朋友有一个固定的颜值

P哥时不时地会找新女朋友,并把新找的女朋友丢进某个桶里面。我们用1kx来表示P哥找了一个颜值为x的女朋友,并且丢进了k号桶里面

P哥每天晚上需要在特定的桶里面找一些女朋友观赏。我们用2lr来表示P哥在l号桶到r号桶之间找女朋友。P哥希望观赏的女朋友颜值异或和尽可能大。

注意:P哥观赏完这些后会女朋友把它们物归原位

输入格式:

第一行两个整数n,m依次表示P哥的操作次数、这组数据会涉及到的最大编号
接下来n行,每行三个整数,表示操作。操作格式如题

输出格式:

对于每个观赏操作,输出P哥能观赏到的最大颜值异或和

说明

对于100%的数据,满足 n , m ≤ 5 ∗ 1 0 4        l ≤ r ≤ m        k ≤ m        x ≤ 2 31 − 1 n,m\leq 5*10^4\;\;\;l\leq r\leq m\;\;\;k\leq m\;\;\;x\leq 2^{31}-1 n,m≤5∗104l≤r≤mk≤mx≤231−1


题目分析

本来是很久以前写的题了,最近点开突然发现黑了
感谢luogu的各位让蒟蒻又A了一道黑题

线段树维护区间线性基
每次查询合并出询问区间的线性基再查询就好了

出题人的题解说要加个优化–线性基满了就不插入
蒟蒻个人认为这种优化只在随即数据下有用,例如我反复插入同一个数那线性基就永远不可能满
但是不加就不能A所以还是加上吧

#include<iostream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long lt;
#define lowbit(x) ((x)&(-x))lt read()
{lt f=1,x=0;char ss=getchar();while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}return f*x;
}const int maxn=50010;
int q,n;
struct node
{lt d[65],cnt;node(){memset(d,0,sizeof(d));cnt=0;}void ins(lt x){for(lt i=32;i>=0;--i)if( x & ((lt)(1)<<i)){if(!d[i]){d[i]=x;cnt++;break;}else x^=d[i];}}
}a[maxn<<2];node merge(node u,node v)
{if(u.cnt==32) return u;if(v.cnt==32) return v;for(int i=32;i>=0;--i)if(v.d[i]) u.ins(v.d[i]);return u;
}void update(int u,int s,int t,int p,lt x)
{if(s==t){ a[p].ins(x); return;}int mid=s+t>>1;if(u<=mid) update(u,s,mid,p<<1,x);else update(u,mid+1,t,p<<1|1,x);a[p].ins(x);
}node query(int ll,int rr,int s,int t,int p)
{if(ll<=s&&t<=rr) return a[p];int mid=s+t>>1; node tt;if(ll<=mid) tt=merge(tt,query(ll,rr,s,mid,p<<1));if(rr>mid) tt=merge(tt,query(ll,rr,mid+1,t,p<<1|1));return tt;
}lt qmax(node tt)
{lt ans=0;for(lt i=32;i>=0;--i)if((ans^tt.d[i])>ans) ans^=tt.d[i];return ans;
}int main()
{q=read();n=read();while(q--){int k=read();if(k==1){lt u=read(),x=read();update(u,1,n,1,x);}else if(k==2){int ll=read(),rr=read();node tt=query(ll,rr,1,n,1);printf("%lld\n",qmax(tt));}}return 0;
}

洛谷P4839 P哥的桶【线段树+线性基】相关推荐

  1. 洛谷P4839 P哥的桶 线段树+线性基

    传送门 题意:N个操作,第K个桶放一个X,查询L到R区间的桶任意数的异或最大值. P哥时不时地会找新女朋友,并把新找的女朋友丢进某个桶里面.我们用 1 k x 来表示P哥找了一个颜值为x的女朋友,并且 ...

  2. 洛谷 - P1886 滑动窗口(单调队列/线段树)

    题目链接:点击查看 题目大意:给出一个由n个数构成的序列,再给出一个长度为k的窗口,这个窗口从第一个下标开始一直向后移动,每次移动一个单位,每次移动询问一次该窗口中的最大值和最小值,最后输出答案 题目 ...

  3. 【题解】洛谷P4145 花神游历各国(线段树)

    洛谷P4145:https://www.luogu.org/problemnew/show/P4145 思路 这道题的重点在于sqrt(1)=1 一个限制条件 与正常线段树不同的是区间修改为开方 那么 ...

  4. P哥的桶(线段树+线性基)

    https://www.luogu.org/problem/P4839 题目: 有两个操作 1 a b  在a的位置添加b数值  (注意一个位置可以有多个值) 2 a b : 在 a到b的范围任取任意 ...

  5. 洛谷P3960 列队(动态开节点线段树)

    题意 题目链接 Sol 看不懂splay..,看不懂树状数组... 只会暴力动态开节点线段树 观察之后不难发现,我们对于行和列需要支持的操作都是相同的:找到第\(k\)大的元素并删除,在末尾插入一个元 ...

  6. LOJ 2312(洛谷 3733) 「HAOI2017」八纵八横——线段树分治+线性基+bitset

    题目:https://loj.ac/problem/2312 https://www.luogu.org/problemnew/show/P3733 原本以为要线段树分治+LCT,查了查发现环上的值直 ...

  7. [BZOJ4184]shallot 线段树+线性基

    链接 题意:给你每个数字出现的时间和消失的时间,求每个时刻最大异或和 题解 按照时间建立线段树,线段树每个节点开个vector存一下这个时间区间有哪些数,然后递归进入的时候加入线性基,开一个栈记录一下 ...

  8. 洛谷 P4246 [SHOI2008]堵塞的交通 线段树

    题目描述 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个222行 C'>CCC列的矩形网格,网格上的每个点代表一个城市,相邻的城市 ...

  9. 洛谷P4837 养殖呆河马(线段树)

    题目描述 作为养殖场的大佬,阳阳引进了养殖呆河马的技术,而且她有一个团队来研究呆河马的养殖技巧来制定养殖规划,并在今年购入了 1 只呆河马.她们制定了从今年(即第 0 年)到第 n−1年的养殖呆河马的 ...

最新文章

  1. 域名删除时间及whois状态说明
  2. 不是程序员学python有什么用-程序员的基本功:为什么非要用Python,其他语言不好吗?...
  3. 哪些书你看之前以为很枯燥,结果一看却欲罢不能的?
  4. Linux网络编程------网络编程基础
  5. Redis中通过bat获取指定前缀开头的所有键值对并输出保存到文件中
  6. wamp编写html页面空白,Win10安装wampserver后打开localhost出现空白怎么办
  7. iOS: bundle name, bundle display name, bundle identifier...
  8. 服务器找不到硬盘如何解决方案,Linux云服务器磁盘不见了?解决方案在这里
  9. mac 下安装iwork+ps+nx2
  10. 学算法先学数据结构?是否是无稽之谈?
  11. 动手打造Android7.0以上的注入工具
  12. IPv4(分类编址)
  13. 秃头程序员保姆教程:Spring框架自学之路(一)
  14. DDOS攻击土味解读
  15. 【存储】Android中的8种数据存储方式
  16. jquery 表单验证插件
  17. 信息系统项目管理师-3项目立项管理
  18. 共阴数码管C语言单片机,51单片机直接驱动共阴极数码管
  19. java类与接口思维导图_详解java接口基础知识附思维导图
  20. Linux中ibus输入法中全拼和双拼的问题+解决VNCserver切换不成功问题

热门文章

  1. 基于脉搏波传导时间的便携式睡眠呼吸监测仪的研制
  2. 计算机报废无法维修证明,维修老板真缺德!修电脑价格没谈拢,把能修好的电脑直接弄报废...
  3. 中等职业学校计算机等级考试模拟题,中等职业学校计算机等级考试题库四(含答案)...
  4. qemu启动OrangePi PC u-boot
  5. Project软件安装包及教程|横道图|进度计划|项目管理
  6. Pico示波器8通道数据采集|PICO示波器高通量信号采集系统NSAT-4000
  7. ios识别人脸自动拍照_求助,使用APP开发自动拍照及标记脸部,可以付费
  8. 基于BP神经网络的手写数字识别
  9. Windows内核--读懂源代码的特殊“标志“(1.4)
  10. ZOJ:P1127KKT数组404美人松的高度1