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, 每天进步一点点的目标,贵在坚持 前端时间有 ...
随机推荐
- 在operator =中要处理“自我赋值”
防止自我赋值很有必要 Widget w; w = w; a[i] = a[j]; //a[i]和a[j]实际上指向同一个元素 *pi = *pj; //pi和pj实际上指向同一个元素 自我赋值的危害: ...
- 博客主Judge已跳槽搬家emmm
跳槽网站:博客园 顺便带一下:洛谷blog (好久没更了QAQ...) ### 不过csdn上还是会照常更新的,毕竟用着方便
- codeforces 416div.2
A CodeForces 811A Vladik and Courtesy B CodeForces 811B Vladik and Complicated Book C CodeFo ...
- 全系列Unity4.x.x到2017.1.1破解Win&Mac!最新Unity2017.1.1p3&4.7.2f1破解!
Unity官网所有版本下载地址请戳: http://unity3d.com/unity/download/archive 补丁版本请戳: http://unity3d.com/cn/unity/qa/ ...
- MinGW GCC 6.3.0 2017年3月份出炉啦
MSYS_MinGW-w64_GCC_630_x86-x64_Full 发布日期: 2017-03-07 08:48 68264 KB 下载地址: http://xhmikosr.1f0.de/too ...
- css3时钟
参考资料: 奇舞团: http://www.75team.com/archives/851 DEMO:demo 截图: 代码: <!DOCTYPE html> <html lang= ...
- C#winform 窗体缩放自适应
1. 首先在窗体上放上一个Panel容器,并将容器的Dock属性设为Fill,即所有的控件都放在了这个容器里. using System; using System.Collections.Gene ...
- Vue 实战项目开发流程
一 基础配备 ## 一.环境搭建 #### 1.安装node - 去[官网](https://nodejs.org/zh-cn/)下载node安装包 - 傻瓜式安装 - 万一安装后终端没有node环境 ...
- mybatis:自动分页插件
项目地址:https://github.com/pagehelper/pagehelper-spring-boot 简单使用: 1.在pom文件中添加 <dependency> <g ...
- 年底Android面试整理(附答案)
面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸二.以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期, ...