看到题:单点插入?区间查询?线段树。异或和最大?线性基。

于是就可以线段树套线性基了。

线段树每个结点维护一个线性基,插入时直接插入,查询时把所有被查询区间所包含的区间的线性基插入到一个大的线性基里,最后在大的线性基里查询就好了。

时间复杂度O(nlogmlogx)O(nlogmlogx)

#include <bits/stdc++.h>
using namespace std;struct lb
{int a[32];void insert(int x){for(int i=31;i>=0;--i)if(x&(1<<i))if(a[i])x^=a[i];else{a[i]=x;return;}}void insert(lb &n){for(int i=31;i>=0;--i)if(n.a[i])insert(n.a[i]);}
}p[200001];void insert(int o,int l,int r,int k,int x)
{p[o].insert(x);if(l==r)return;int mid=(l+r)>>1;if(k<=mid)insert(o<<1,l,mid,k,x);elseinsert(o<<1|1,mid+1,r,k,x);
}lb ans;void query(int o,int l,int r,int ql,int qr)
{if(ql<=l && qr>=r){ans.insert(p[o]);return;}int mid=(l+r)>>1;if(qr<=mid)query(o<<1,l,mid,ql,qr);else if(mid<ql)query(o<<1|1,mid+1,r,ql,qr);else query(o<<1,l,mid,ql,mid),query(o<<1|1,mid+1,r,mid+1,qr);
}int main()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;++i){int op,a,b;scanf("%d%d%d",&op,&a,&b);if(op==1)insert(1,1,m,a,b);else{memset(ans.a,0,sizeof(ans.a));query(1,1,m,a,b);int maxn=0;for(int i=31;i>=0;--i)if((maxn^(ans.a[i]))>maxn)maxn^=ans.a[i];printf("%d\n",maxn);}}
}

打工人不容易,留下关注+赞在走吧

P4839 P哥的桶 题解相关推荐

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

    题目描述 P哥现在有n个桶,他们排成了一排,这些桶可以装下任意多个女朋友.每个女朋友有一个固定的颜值 P哥时不时地会找新女朋友,并把新找的女朋友丢进某个桶里面.我们用1kx来表示P哥找了一个颜值为x的 ...

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

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

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

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

  4. Python解题 - NOIP2005 青蛙过河

    本题解经过热心网友的指正,已经更新,问哥为之前的武断向大家道歉.此题解仅供参考,感谢大家的监督与建议. 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很 ...

  5. 你见过最差的程序员是怎样的?

    大概就是我上周面试遇到的妹子吧-- 前阵子公司在招算法实习生,HR初筛过简历后喊我去面试.我想着也别太为难实习生,整个简单的题测一下,再深挖下简历就差不多了,这是背景. 刚好我们做了一套[新手必刷编程 ...

  6. PKUWC2020 (旅)游记

    体验营员没人权系列 草 话说这不还是2019年么... 先占坑 本来以为冬令营没戏 回去上了一个月文化课 最后一周才知道进了 W C WC WC 匆匆停了一周课就滚来旅游了 听说是 l i n u x ...

  7. NOIP2016天天爱跑步 题解报告【lca+树上统计(桶)】

    题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 nn个 ...

  8. [NOIP模拟测试9]题(Problem) 题解 (组合数全家桶+dp)

    达哥送分给我我都不要,感觉自己挺牛批. $type=0:$ 跟visit那题类似,枚举横向移动的步数直接推公式: $ans=\sum C_n^i \times C_i^{\frac{i}{2}} \t ...

  9. 混合个人训练第四十六场(A,B题解) A 数论线代全家桶 (all) B: 看星星 (stars)

    A 数论线代全家桶 (all) 题意如图. 思路: 首先发现 1 = 1 * 1 * 1; n=1; 4 = 1 * 4 * 1; n=2; 72 = 4 * 18=4 * 9 * 2; n=3; 2 ...

  10. 算法题解_哥德巴赫曾猜测

    本周总结 文章目录 本周总结 一.哥德巴赫曾猜测 1.思路 2.代码 一.哥德巴赫曾猜测 题目描述 德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和.但有些偶数可以分解成多 ...

最新文章

  1. 出现java.lang.IllegalArgumentException异常
  2. 安卓开发实现画廊效果
  3. PHP常用函数之文件系统处理
  4. 高人写的浙大简史(转)
  5. JAXB自定义绑定– Java.util.Date / Spring 3序列化
  6. 【Lintcode】018.Subsets II
  7. 【编撰】linux IPC 001 - 概述
  8. 从零开始学keras之生成对抗网络GAN
  9. 学习用TypeScript写React组件
  10. 分享:一篇webpack配置基础绝好文章
  11. Python之socketserver源码分析
  12. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_9_Thread类的常用方法_获取线程名称...
  13. [html] 回到页首
  14. C# 使用openxml解析PPTX中的文本内容
  15. matlab曼德勃罗集,YaK与您一起欣赏BBC纪录片:''''神秘的混沌理论''''
  16. 获得与回馈丨点评中国两大金融机构基于OpenStack的网络联合实践
  17. php zend引擎解析原理,PHP内核分析-Zend引擎-栈结构及操作
  18. 类似于QQ的网络聊天室
  19. jQuery滑动效果
  20. F 阎小罗的Minimax (第十届山东理工大学ACM网络编程擂台赛 正式赛 )

热门文章

  1. 递归--组合数计算--委员会问题--抽人问题
  2. 大数据论文_01_GFS(个人总结)
  3. TED地道用语学习 - <脆弱的力量> - 3
  4. 华为交换机初始化_我想问华为 s5700交换机 1。请问怎么恢复出厂设置? 2。如果没有密码又怎么恢复出厂设置? 谢谢了...
  5. 【书影观后感 十二】沧浪之水清兮,可以濯我缨 沧浪之水浊兮,可以濯我足
  6. W3Cschool从零开始学C语言笔记(1-2)位、字节及排列组合
  7. IceSword冰刃使用方法
  8. Angular- 响应式表单和模板驱动表单
  9. HE4484E原厂升压8.4v锂电池充电芯片
  10. 两步就能使用pyqt制作软件界面,写一个基于you-get的windows端app