• 牛客提高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;
    }
  • 相关阅读:
    《Google 软件测试之道》摘录
    UIRecorder环境搭建及录制实现
    网易《人性的哲学与科学》笔记
    网易《公正:该如何做是好?》笔记(不定时更新)
    自助饮料机实现
    网易《社会心理学》笔记(不定时更新)
    uiautomator +python 安卓UI自动化尝试
    doc
    doc
    doc
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/11405743.html
Copyright © 2020-2023  润新知