首页 > 其他分享 >xor序列 线性基

xor序列 线性基

时间:2024-05-09 09:46:06浏览次数:18  
标签:xor int cin return 序列 const 线性 -- define

xor序列 线性基

题目链接

题意

给你 \(n\) 个数,接着给你 \(m\) 次询问,每次给出 \(x\) 和 \(y\) ,判断 \(x\) 能否与 \(n\) 个数中任意选出的数异或和为 \(y\)

思路

考虑异或运算性质 若 \(a\) ^ \(b\) = \(c\) , 那么 \(b = a\) ^ \(c\) 。 因此我们只需要找出 \(n\) 个数异或和是否可以表示出 \(x\) ^ \(y\) 即可。那么用线性基就可以快速解决了。

代码

#include<bits/stdc++.h>

using namespace std;

#define ff first
#define ss second
#define pb push_back
#define all(u) u.begin(), u.end()
#define endl '\n'
#define debug(x) cout<<#x<<":"<<x<<endl;

typedef pair<int, int> PII;
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int N = 1e5 + 10, M = 105;
const int mod = 1e9 + 7;
const int cases = 0;

int p[M];
void insert(int x){
   for(int i=63;i>=0;i--){
      if(x>>i&1){
         if(!p[i]){
            p[i]=x;
            return;
         }
         x^=p[i];
      }
   }
}

bool find(int x){
   for(int i=63;i>=0;i--){
      if(x>>i&1){
         if(!p[i]) return false;
         x^=p[i];
      }
   }
   return true;
}
void Showball(){
   int n;
   cin>>n;
   while(n--){
      int x;
      cin>>x;
      insert(x);
   }
   int m;
   cin>>m;
   while(m--){
      int x,y;
      cin>>x>>y;
      cout<<(find(x^y)?"YES\n":"NO\n");
   }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T=1;
    if(cases) cin>>T;
    while(T--)
    Showball();
    return 0;
}

标签:xor,int,cin,return,序列,const,线性,--,define
From: https://www.cnblogs.com/showball/p/18181421

相关文章

  • Apache Commons Collections反序列化漏洞
    目录复现环境准备POC漏洞原理分析构造反射链TransformedMap利用链ApacheCommonsCollections的反序列化漏洞在2015年被曝光,引起了广泛的关注,算是java历史上最出名同时也是最具有代表性的反序列化漏洞。复现环境准备jdk1.7版本下载压缩包链接:https://pan.baidu.com/s/......
  • 基于深度卷积神经网络的时间序列图像分类,开源、低功耗、低成本的人工智能硬件提供者
    具体的软硬件实现点击http://mcu-ai.com/MCU-AI技术网页_MCU-AI人工智能卷积神经网络(CNN)通过从原始数据中自动学习层次特征表示,在图像识别任务中取得了巨大成功。虽然大多数时间序列分类(TSC)文献都集中在1D信号上,但本文使用递归图(RP)将时间序列转换为2D纹理图像,然后利用深度CNN分......
  • leetCode 128. 最长连续序列
    给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4。示例2:输入:nums=[0,3,7,......
  • 最长子序列
    为了解决这个问题,我们可以使用滑动窗口的方法。滑动窗口可以让我们在不需要嵌套循环的情况下遍历序列中所有的连续子序列。以下是这个方法的步骤:初始化两个指针start和end,都指向序列的开始。初始化当前和current_sum为0。移动end指针,每次移动都将end指向的值加到c......
  • python教程6.3-json序列化
    序列化:dumps,编码,将python类型转成json对象反序列化:loads,解码,将json对象转成python对象pickle模块提供了四个功能:dumps、loads、dump、load(前2个操作变量,后2个操作文件)jsonjson模块也提供了四个功能:dumps、dump、loads、load,⽤法跟pickle⼀致。(前2个操作变量,后2个操作文件)......
  • 线性模型
    机器学习(MachineLearning)是指面对一个特定问题,我们不直接给出特定的算法,而是通过某种方式让计算机自身获得一个解决这个特定问题的算法的编程模式。机器学习面对的问题主要有两种,一种称为监督学习(SupervisedLearning),一种称为非监督学习(UnsupervisedLearning)。监督学习本......
  • Fastjson反序列化漏洞
    目录漏洞原理复现Fastjson1.2.24Fastjson1.2.47漏洞分析Fastjson是阿里巴巴开源的一个Java库,用于将Java对象转换为JSON字符串(序列化),以及将JSON字符串转换为Java对象(反序列化),漏洞编号CVE-2017-18349。漏洞原理Fastjson引入了autoType功能,允许在反序列化过程中通过@type......
  • 【Python-Json】自定义类输入json序列化、json的读取与写入
    AI问答Questionjson支持numpy数组么Answer不幸的是,标准的JSON格式不直接支持NumPy数组.JSON是一种用于存储和交换数据的文本格式,它有限的数据类型只包括对象(object)、数组(array)、数字(number)、字符串(string)、布尔值(true/false)、空值(null)等.因此,无法直接将......
  • P3383 【模板】线性筛素数
    原题链接题解关键因素:任何合数都可以分为最小质数乘上另外一个数code#include<bits/stdc++.h>usingnamespacestd;vector<int>ans;intmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);intn;cin>>n;vector<int>vis(n+5,0);......
  • 1. 实战7.4HDU1710-由先序和中序序列产生后序序列
    希冀平台:代码:#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<string.h>#include<iomanip>#include<stdlib.h>#include<map>#includ......