写线性基交函数时调试了半天。。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 100005
int n,m;
struct LB{
ll b[];
int check(ll x){
for(int i=;i>=;i--)if(x>>i & ){
if(!b[i])return ;
x^=b[i];
}
return ;
}
void insert(ll x){
for(int i=;i>=;i--)if(x>>i & ){
if(!b[i]){
b[i]=x;return;
}
x^=b[i];
}
}
}base[maxn];
void merge(LB A,LB B,LB & W){
LB ALL,D;//W是AB的交,D[i]表示凑出bi用了哪些A的基,即每个bi对应的T
for(int i=;i<=;i++)ALL.b[i]=D.b[i]=A.b[i];
for(int i=;i<=;i++)if(B.b[i]){
ll bi=B.b[i],T=,flag=;
for(int j=;j>=;j--)if(bi>>j & ){
if(!ALL.b[j]){
ALL.b[j]=bi;D.b[j]=T;
flag=;break;
}
bi^=ALL.b[j];T^=D.b[j];
}
if(!flag)
W.insert(T);
}
} #define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
LB seg[maxn<<];
void build(int l,int r,int rt){
if(l==r){seg[rt]=base[l];return;}
int m=l+r>>;
build(lson);build(rson);
merge(seg[rt<<],seg[rt<<|],seg[rt]);
}
int query(int L,int R,ll x,int l,int r,int rt){
if(L<=l && R>=r)return seg[rt].check(x);
int m=l+r>>,res=;
if(L<=m)res&=query(L,R,x,lson);
if(R>m)res&=query(L,R,x,rson);
return res;
} int main(){
scanf("%d%d",&n,&m); for(int i=;i<=n;i++){
int k;scanf("%d",&k);
while(k--){
ll x;scanf("%lld",&x);
if(!base[i].check(x))
base[i].insert(x);
}
}
build(,n,); int l,r;ll x;
while(m--){
scanf("%d%d%lld",&l,&r,&x);
if(query(l,r,x,,n,))puts("YES");
else puts("NO");
}
}

牛客多校第三次B——线段树维护线性基交的更多相关文章

  1. MAZE(2019年牛客多校第二场E题+线段树+矩阵乘法)

    题目链接 传送门 题意 在一张\(n\times m\)的矩阵里面,你每次可以往左右和下三个方向移动(不能回到上一次所在的格子),\(1\)表示这个位置是墙,\(0\)为空地. 现在有\(q\)次操作 ...

  2. 2018牛客多校6 - I Team Rocket KD树维护空间

    题意:给出n条铁路区间\([L,R]\),共有m个boom依时间顺序放置在\(k_i\)中,区间与\(k_i\)有交集的都被炸掉 求每次炸掉的铁路个数和最后输出所有id被炸的时间点 炸弹能炸到的区间满 ...

  3. 牛客多校第三场 F Planting Trees

    牛客多校第三场 F Planting Trees 题意: 求矩阵内最大值减最小值大于k的最大子矩阵的面积 题解: 矩阵压缩的技巧 因为对于我们有用的信息只有这个矩阵内的最大值和最小值 所以我们可以将一 ...

  4. 牛客多校第三场 G Removing Stones(分治+线段树)

    牛客多校第三场 G Removing Stones(分治+线段树) 题意: 给你n个数,问你有多少个长度不小于2的连续子序列,使得其中最大元素不大于所有元素和的一半 题解: 分治+线段树 线段树维护最 ...

  5. 牛客多校第3场 J 思维+树状数组+二分

    牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...

  6. 牛客多校第三场 A—pacm team (4维背包加路径压缩)

    链接:https://www.nowcoder.com/acm/contest/141/A 来源:牛客网 Eddy was a contestant participating , Eddy fail ...

  7. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  8. 牛客多校第三场-A-PACM Team-多维背包的01变种

    题目我就不贴了...说不定被查到要GG... 题意就是我们需要在P,A,C,M四个属性的限制下,找到符合条件的最优解... 这样我们就需要按照0/1背包的思路,建立一个五维度数组dp[i][j][k] ...

  9. 牛客多校第三场 A- PACM Team 背包/记忆路径

    https://www.nowcoder.com/acm/contest/141#question 一眼背包,用四维dp记录在A,B,C,D条件限制下可以获得的最大知识点,但是题目要求输出路径,在输入 ...

随机推荐

  1. Dubbo---Multicast 注册中心---xml配置

    1.项目结构(maven项目) 2.dubbotest.pom <?xml version="1.0" encoding="UTF-8"?> < ...

  2. 常见条码类型介绍(Code 39、Code 128、EAN-8、EAN-13、EAN-128、ISSN、TIF、TIF-14、UPC(A)、UPC(E))

    常见条码类型,如下: 1.Code 39 Code 39,又称为"Code 3 of 9",是非零售市场中最常用的格式,用于盘存和跟踪.Code 39码编码规则简单,误码率低.所能 ...

  3. git——commit成功后,GitHub方格不变绿

    一通百度该设置的都设置了,还是不好使 发现有提示一栏 pull request的东西  在网上查貌似是因为两个分支内容不同 提示是否合并,还查到了不变绿可能的原因. Contributions未被Gi ...

  4. JPA中遇到一些异常的分析与解决

    Spring Data JPA踩坑到填坑:1 JPA多对多关 //作者表 //书籍表 Book和Author是多对多关系 先放两张图做个说明:Jpa底层依赖于hibernate,hibernate默认 ...

  5. psecurity配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  6. PHP FILTER_SANITIZE_MAGIC_QUOTES 过滤器

    定义和用法 FILTER_SANITIZE_MAGIC_QUOTES 过滤器对字符串执行 addslashes() 函数. 该过滤器在预定义的字符串前面设置反斜杠. 预定义字符是: 单引号(') 双引 ...

  7. JZOI1169A 平均数Ave

    #include <cstdio> #include <cmath> #define lztin() read() #define ztyout( a ) printf( &q ...

  8. 2018—2019—2 20165239《网络对抗技术》Exp7 网络欺诈防范

    一.原理与实践说明 1.实践目标 本实践的目标是:理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 2.实践内容概述 简单应用SET工具建立冒名网站 (1分) ettercap DNS ...

  9. UVA 356 - Square Pegs And Round Holes

    题目:在一个2n*2n的网格中间画一个直径为2n-1的圆,问圆内部的格子以及和圆相交的格子个数. 思路:只要考虑1 / 4圆的点就行,用点到原点距离与半径比较,当格子左下方和右上方都在格子里时,格子在 ...

  10. Django的日常-数据传输

    目录 Django的日常-1 Django中最常用的三个东西 HTTPresponse render redirect 静态文件相关 form表单的get与post 神奇的request 模板的传值方 ...