• 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;
    }
    
    
    
    
  • 相关阅读:
    Magento:Paypal付款不成功返回后不要清空购物车产品的解决方案
    magento设置订单状态
    linux下查看所有用户以及用户组
    网站无法访问的原因
    magento 多域名多店铺
    linode空间lamp环境的搭建
    hp p410固件更新
    tracert
    镜像架设
    nohup
  • 原文地址:https://www.cnblogs.com/pkh68/p/10526900.html
Copyright © 2020-2023  润新知