zoukankan      html  css  js  c++  java
  • Luogu3164[CQOI2014]和谐矩阵

    Luogu3164[CQOI2014]和谐矩阵

    题面:洛谷

    解析

    没啥好说的,列出异或方程组高斯消元即可(话说异或方程组和线性基长得好像啊)。

    代码

    
    // luogu-judger-enable-o2
    #include<cstdio>
    #include<bitset>
    #define pos(i,j) ((i-1)*m+j)
    #define N 1605
    using namespace std;
    int n,m,A,vi,vj,x[N];
    int mx[5]={-1,0,1,0,0},my[5]={0,1,0,-1,0};
    bitset<N> a[N];
    #define gc() getchar()
    inline int In(){
        char c=gc(); int x=0,ft=1;
        for(;c<'0'||c>='9';c=gc()) if(c=='-') ft=-1;
        for(;c>='0'&&c<='9';c=gc()) x=x*10+c-'0';
        return x*ft;
    }
    int main(){
        n=In(); m=In(); A=n*m;
        for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j){
            for(int k=0;k<5;++k){
                vi=i+mx[k],vj=j+my[k];
                if(vi<1||vi>n) continue;
                if(vj<1||vj>m) continue;
                a[pos(i,j)][pos(vi,vj)]=1;
            }
        }
        for(int i=1;i<=A;++i){
            if(!a[i][i]) for(int j=i+1;j<=A;++j)
            if(a[j][i]){ swap(a[i],a[j]); break; }
            for(int j=i+1;j<=A;++j) if(a[j][i]) a[j]^=a[i];
        }
        for(int i=A;i;--i){
            x[i]=a[i][A+1];
            for(int j=A;j>i;--j) if(a[i][j]) x[i]^=x[j];
            if(!a[i][i]) x[i]=1;
        }
        for(int i=1;i<=A;++i) printf("%d%c",x[i],(i%m==0)?'
    ':' ');
        return 0;
    }
    
    
    
    
  • 相关阅读:
    celery worker的工作模式
    动态加载js
    PHP加密解密
    js加载div, 元素事件不生效问题
    任意页面加载聊天框组件(也可用于其他)
    重装系统
    vue 跨域问题
    859. Buddy Strings
    316. Remove Duplicate Letters
    654. Maximum Binary Tree
  • 原文地址:https://www.cnblogs.com/pkh68/p/10526900.html
Copyright © 2011-2022 走看看