T37302 P哥的桶
题解:
比较简单的一道题
线段树+线性基
显然离线处理出位置
然后线段树updata的时候暴力合并线性基
nlogn^3
一个常数优化就是线性基已满就直接返回这个线性基
还有个优化是用快速找到第一个1的函数
代码:
#include <bits/stdc++.h>
using namespace std;
#define rint register ll
#define IL inline
#define me(x) memset(x,0,sizeof(x))
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
ll n,m,num;
const ll N=12e4;
char ss[<<],*A=ss,*B=ss;
IL char gc()
{
return A==B&&(B=(A=ss)+fread(ss,,<<,stdin),A==B)?EOF:*A++;
}
template<class T> void IL read(T &x)
{
rint f=,c; while (c=gc(),c<||c>) if (c=='-') f=-; x=(c^);
while (c=gc(),c>&&c<) x=(x<<)+(x<<)+(c^); x*=f;
}
struct re{
ll a,b,c;
}a[N];
ll cnt[N],sum[N];
vector<ll> ve;
struct sgt{
#define mid ((h+t)/2)
ll f[N*][];
IL void cr(ll *c,ll k)
{
dep(i,,)
{
if (!k) return;
if (k&(<<(i-)))
{
if (!c[i])
{
c[i]=k; return;
} else k^=c[i];
}
}
}
struct re2{
ll a[];
re2 ()
{
memset(a,,sizeof(a));
}
};
IL re2 hb(ll *x,ll *y)
{
ll cnt1=,cnt2=;
rep(i,,) if (x[i]) cnt1++;
rep(i,,) if (y[i]) cnt2++;
re2 now;
if(cnt1==)
{
rep(i,,) now.a[i]=x[i];
return(now);
}
if (cnt2==)
{
rep(i,,) now.a[i]=y[i];
return(now);
}
if (cnt1<cnt2)
{
rep(i,,) now.a[i]=y[i];
rep(i,,)
if (x[i]) cr(now.a,x[i]);
} else
{
rep(i,,) now.a[i]=x[i];
rep(i,,)
if (y[i]) cr(now.a,y[i]);
}
return(now);
}
IL void updata(ll x)
{
re2 now=hb(f[x*],f[x*+]);
rep(i,,) f[x][i]=now.a[i];
}
void query(ll x,ll h,ll t,ll h1,ll t1)
{
if (h1<=h&&t<=t1)
{
ve.push_back(x);
return;
}
if (h1<=mid) query(x*,h,mid,h1,t1);
if (mid<t1) query(x*+,mid+,t,h1,t1);
}
void change(ll x,ll h,ll t,ll pos,ll k)
{
if (h==t)
{
cr(f[x],k);
return;
}
if (pos<=mid) change(x*,h,mid,pos,k);
else change(x*+,mid+,t,pos,k);
updata(x);
}
IL ll query2()
{
re2 now;
for(ll i=;i<ve.size();i++)
now=hb(now.a,f[ve[i]]);
ll ans=;
for(ll i=;i>=;i--)
if (now.a[i]&&!(ans&(<<(i-)))) ans^=now.a[i];
return ans;
}
}S;
ll main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
read(m); read(n);
rep(i,,m)
{
ll k,x,y;
read(k); read(x); read(y);
a[i].a=k; a[i].b=x; a[i].c=y;
if (k==) cnt[x]++;
}
rep(i,,n) cnt[i]+=cnt[i-];
num=cnt[n];
rep(i,,m)
{
ll k=a[i].a,x=a[i].b,y=a[i].c;
if (k==)
{
sum[x]++;
S.change(,,num,cnt[x-]+sum[x],y);
} else
{
ve.clear();
if (cnt[x-]+<=cnt[y])
{
S.query(,,num,cnt[x-]+,cnt[y]);
cout<<S.query2()<<endl;
} else cout<<<<endl;
}
}
return ;
}
T37302 P哥的桶的更多相关文章
- P哥的桶(线段树+线性基)
		https://www.luogu.org/problem/P4839 题目: 有两个操作 1 a b 在a的位置添加b数值 (注意一个位置可以有多个值) 2 a b : 在 a到b的范围任取任意 ... 
- 【校内test】桶哥的问题
		(以上题目出自_rqy两年前) #A:桶哥的问题——买桶[链接] [题目描述] 桶哥要买一些全家桶.他有a元钱,而每个桶要花b元钱.他能不能买到c个桶? [输入格式] 一行三个整数a, b, c [输 ... 
- 校内题目T2695 桶哥的问题——吃桶
		同T2一样外校蒟蒻可能没看过: 题目描述: 题目背景 @桶哥 桶哥的桶没有送完. 题目描述 桶哥的桶没有送完,他还有n个桶.他决定把这些桶吃掉.他的每一个桶两个属性:种类aia_iai和美味值bib ... 
- [CQOI2018]交错序列 (矩阵快速幂,数论)
		[CQOI2018]交错序列 \(solution:\) 这一题出得真的很好,将原本一道矩阵快速幂硬生生加入组合数的标签,还那么没有违和感,那么让人看不出来.所以做这道题必须先知道(矩阵快速幂及如何构 ... 
- T2695 桶哥的问题——吃桶
		~~~~~我~是~真的~忍不了~这个~取模~的~锅~了~~~~~ T2695 桶哥的问题——吃桶 前传 1.T2686 桶哥的问题——买桶 这题真的hin简单,真的 2.T2691 桶哥的问题——送桶 ... 
- 校内题目T2691 桶哥的问题——送桶
		这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ... 
- 【洛谷T2695 桶哥的问题——吃桶】
		这是我们团队的一个题目(就是一个_rqy说很好写的题QwQ) 题目背景 @桶哥 这个题目的思路很玄学(性感_rqy在线讲解) 60 Pts 对于前面的六十分,好像很好拿,单纯的打一个模拟 唯一需要注意 ... 
- 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和
		求和=>[链接] 题目相较起_rqy出的要简单很多,来自noip普及组2015 化简这个式子:x+z=2y,故x与z mod 2同余,因此和桶哥的问题——吃桶一样的思路就可以做出来啦qwq: # ... 
- 老哥你能写篇 SpringCloud Alibaba 全家桶吗? 看视频太累 太枯燥了 !
		最喜欢的一句话: 1.01的365次方=37.78343433289 >>>1 0.99的365次方= 0.02551796445229, 每天进步一点点的目标,贵在坚持 前端时间有 ... 
随机推荐
- python的assert关键字用法
- $Django setting.py配置 ,GET、POST深入理解,三件套,orm对象关系映射简介
			1 django中app的概念: 大学:----------------- 项目 信息学院 ----------app01 物理学院-----------app02 ****强调***:创建的每一 ... 
- freeswitch反注册记录
			应用情景: 使用阿里服务器,落地使用本地的模拟线路(O口网关). 1.FreeSWITCH 服务器开一个账号,比如 5000 internal , O口 SIP设置页面按照网关注册 5000 的账号信 ... 
- [JavaScript]为JS处理二进制数据提供可能性的WEB API
			写这篇博客的起源是在div.io上的一篇文章<你所不知道的JavaScript数组>by 小胡子哥下的评论中的讨论. 因为随着XHR2和现代浏览器的普及,在浏览器当中处理二进制不再向过去那 ... 
- adb ( Android Debug Bridge)
			adb ( Android Debug Bridge) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调试应用. adb工具的工 ... 
- 本地http://localhost打不开怎么办
			本地http://localhost打不开怎么办 出自:http://jingyan.baidu.com/article/c45ad29cebb95a051753e2b6.html 学过计算机的都知道 ... 
- Flume集群搭建
			0. 软件版本下载 http://mirror.bit.edu.cn/apache/flume/ 1. 集群环境 Master 172.16.11.97 Slave1 172.16.11.98 S ... 
- 【进阶3-1期】JavaScript深入之史上最全--5种this绑定全面解析(转)
			这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://github.com/yygmind/blog/issues/20 this的绑定规则总共有下面5种. 1.默认绑定(严格/非严 ... 
- vue.js的计算机属性学习
			<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ... 
- eclipse php pdt插件安装
			安装动态语言工具包: help->new install software->work with 框输入 http://download.eclipse.org/technology/dl ... 
