zoukankan      html  css  js  c++  java
  • 专题--XOR之线性基

       没想到xor居然和线性代数有着那么有趣的联系哎

               n个数可以转化为一个上三角矩阵  (线性无关?!)

                

    链接:https://www.nowcoder.com/acm/contest/180/D
    来源:牛客网

    题目描述

    小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y

    输入描述:

    第一行为一个整数n,表示元素个数
    第二行一行包含n个整数,分别代表序列中的元素
    第三行为一个整数Q,表示询问次数
    接下来Q行,每行两个数x,y,含义如题所示

    输出描述:

    输出Q行,若x可以变换为y,输出“YES”,否则输出“NO”
    示例1

    输入

    复制
    5
    1 2 3 4 5
    3
    6 7 
    2 1
    3 8

    输出

    复制
    YES
    YES
    NO
     1 #include <bits/stdc++.h>
     2 #define N 30
     3 using namespace std;
     4 int b[N+5];
     5 int n;
     6 int main ()
     7 {
     8     scanf ("%d",&n);
     9     for (int i=1;i<=n;i++) {
    10         int x; scanf ("%d",&x);
    11         for (int j=N;j>=0;j--) 
    12             if ((1<<j)&x) {
    13                 if (!b[j]) {
    14                     b[j]=x;
    15                     break;
    16                 }
    17                 else       x^=b[j];
    18             }
    19     }
    20     int Q; scanf ("%d",&Q);
    21     while (Q--) {
    22         int x,y; scanf ("%d %d",&x,&y);
    23         x=x^y;
    24         for (int i=N;i>=0;i--)  {
    25             if ((1<<i)&x) 
    26                 x^=b[i];
    27         }
    28         if (x) printf("NO
    ");
    29         else   printf("YES
    ");
    30     }
    31     return 0;
    32 }
    抓住青春的尾巴。。。
  • 相关阅读:
    装饰器
    kolla部署all-in-one
    k8s集群部署gitlab
    helm部署gitlab
    控制器和pod调度流程
    esxi安装
    Linux系统性能分析工具
    configMap和secret
    etcd 问题、调优、监控
    动感单车
  • 原文地址:https://www.cnblogs.com/xidian-mao/p/9688111.html
Copyright © 2011-2022 走看看