zoukankan      html  css  js  c++  java
  • 牛客提高D3t1 破碎的矩阵

    分析

    我们发现如果行的异或和等于列的异或和那么对于n-1行m-1列的所有数的选择都是任意的

    因为一定可以在它的行末/列末选一个合适的数是的整体满足

    但是我们发现对于右下角那一个数是否满足存疑

    我们设矩阵为

    a1  a2  a3  a4

    a5  a6  a7  a8

    a9  a10 a11 a12

    a13 a14 a15 a16

    设行和列的异或值分别为X1 X2 X3 X4 Y1 Y2 Y3 Y4

    设左上角3*3的矩阵的异或值为ALL

    则:

    a16 = X4 ^ (Y1 ^ Y2 ^ Y3 ^ ALL)

        =X4 ^ (X1 ^ X2 ^ X3 ^ X4 ^ Y4 ^ ALL)

        = Y4 ^ (X1 ^ X2 ^ X3 ^ ALL)

    得证

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    #define int long long
    int n,m,mod;
    inline int pw(int x,int p){
        int res=1;
        while(p){
          if(p&1)res=res*x%mod;
          x=x*x%mod;
          p>>=1;
        }
        return res;
    }
    signed main(){
        int i,j,k,t,v;
        scanf("%lld",&t);
        while(t--){
          scanf("%lld%lld%lld%lld",&n,&m,&k,&mod);
          int ans=0,x=0,y=0;
          for(i=1;i<=n;i++){
            scanf("%lld",&v);
            x^=v;
          }
          for(i=1;i<=m;i++){
            scanf("%lld",&v);
            y^=v;
          }
          if(x!=y)puts("0");
            else {
              k++;
              k%=mod;
              printf("%lld
    ",pw(pw(k,n-1),m-1));
            }
        }
        return 0;
    }
  • 相关阅读:
    异步FIFO总结
    异常检测参考
    Java数据库连接技术
    Eclipse Decompiler不生效解决办法
    mysql常用操作
    时间序列预测——Tensorflow.Keras.LSTM
    AR(I)MA时间序列建模过程——步骤和python代码
    MySQL优化实例
    MySQL性能优化经验
    高性能MySQL笔记 第6章 查询性能优化
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/11405743.html
Copyright © 2011-2022 走看看