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

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define maxn 100005
  5. int n,m;
  6. struct LB{
  7. ll b[];
  8. int check(ll x){
  9. for(int i=;i>=;i--)if(x>>i & ){
  10. if(!b[i])return ;
  11. x^=b[i];
  12. }
  13. return ;
  14. }
  15. void insert(ll x){
  16. for(int i=;i>=;i--)if(x>>i & ){
  17. if(!b[i]){
  18. b[i]=x;return;
  19. }
  20. x^=b[i];
  21. }
  22. }
  23. }base[maxn];
  24. void merge(LB A,LB B,LB & W){
  25. LB ALL,D;//W是AB的交,D[i]表示凑出bi用了哪些A的基,即每个bi对应的T
  26. for(int i=;i<=;i++)ALL.b[i]=D.b[i]=A.b[i];
  27. for(int i=;i<=;i++)if(B.b[i]){
  28. ll bi=B.b[i],T=,flag=;
  29. for(int j=;j>=;j--)if(bi>>j & ){
  30. if(!ALL.b[j]){
  31. ALL.b[j]=bi;D.b[j]=T;
  32. flag=;break;
  33. }
  34. bi^=ALL.b[j];T^=D.b[j];
  35. }
  36. if(!flag)
  37. W.insert(T);
  38. }
  39. }
  40.  
  41. #define lson l,m,rt<<1
  42. #define rson m+1,r,rt<<1|1
  43. LB seg[maxn<<];
  44. void build(int l,int r,int rt){
  45. if(l==r){seg[rt]=base[l];return;}
  46. int m=l+r>>;
  47. build(lson);build(rson);
  48. merge(seg[rt<<],seg[rt<<|],seg[rt]);
  49. }
  50. int query(int L,int R,ll x,int l,int r,int rt){
  51. if(L<=l && R>=r)return seg[rt].check(x);
  52. int m=l+r>>,res=;
  53. if(L<=m)res&=query(L,R,x,lson);
  54. if(R>m)res&=query(L,R,x,rson);
  55. return res;
  56. }
  57.  
  58. int main(){
  59. scanf("%d%d",&n,&m);
  60.  
  61. for(int i=;i<=n;i++){
  62. int k;scanf("%d",&k);
  63. while(k--){
  64. ll x;scanf("%lld",&x);
  65. if(!base[i].check(x))
  66. base[i].insert(x);
  67. }
  68. }
  69. build(,n,);
  70.  
  71. int l,r;ll x;
  72. while(m--){
  73. scanf("%d%d%lld",&l,&r,&x);
  74. if(query(l,r,x,,n,))puts("YES");
  75. else puts("NO");
  76. }
  77. }

牛客多校第三次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. nc临时开启端口并监听

    port="6379 3306 27017 4505 4506 24007 24008 49152" #while true #do for i in $port do isexi ...

  2. Vue学习笔记【9】——Vue指令之v-for和key属性

    迭代数组(普通数组.对象数组) <ul> <li v-for="(item, i) in list">索引:{{i}} --- 姓名:{{item.name ...

  3. Java——类之间的关系

    3.7 类之间的关系 3.7.1 泛化关系 类和类之间的继承关系及接口与接口之间的继承关系. 3.7.2 实现关系 类对接口的实现. 3.7.3 关联关系 类与类之间的连接,一个类可以知道另一个类的属 ...

  4. 【LeetCode 24】两两交换链表中的节点

    题目链接 [题解] 简单的链表操作 [代码] /** * Definition for singly-linked list. * struct ListNode { * int val; * Lis ...

  5. STL————bitset

    C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间. bitset<> bitset1; //无参构造,长度为 ...

  6. delphi 多线程3

     多线程程序设计 我们知道,win95或winNT都是“多线程”的操作系统,在DELPHI .中,我们可以充分利用这一特性,编写出“多线程”的应用程序. 对以往在DOS或16位windows下写程序的 ...

  7. BZOJ 3430: [Usaco2014 Jan]Ski Course Rating(并查集+贪心)

    题面 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 136 Solved: 90 [Submit][Status][Discuss] Descript ...

  8. centos coreseek

    下载稳定版 coreseek wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz 解压 .tar.gz cd cor ...

  9. [bzoj3073] Journeys 题解(线段树优化建图)

    Description Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建 ...

  10. C/S模式简单socket通信

    TCP连接方式 sever.c #include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#inclu ...