zoukankan      html  css  js  c++  java
  • P2117 小Z的矩阵

    题意:

    给你一个初始01矩阵

    三种操作

    1、给一个x,把第x行01互换

    2、给一个x,把第x列01互换

    3、求$(sum_{i=1}^nsum_{j=1}^nf[i][j]*f[j][i])%2$

    $nle 10^3,qle 5*10^5$

    暴力是$O(n^2q)$的,很明显过不了

    那么应该怎么做呢

    不难看出$f[i][j]$在$i e j$的时候被算了两次!!!

    如果f[i][j]*f[j][i]=1,那么就是(1+1)%2=2%2=0

    如果f[i][j]*f[j][i]=0,那么就是(0+0)%2=0%2=0

    卧槽,根本对答案无贡献啊

    所以只用考虑对角线就行了

    $O(q)$

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cctype>
    #include<algorithm>
    using namespace std;
    #define olinr return
    #define _ 0
    #define love_nmr 0
    #define DB double
    inline int read()
    {
        int x=0,f=1;
        char ch=getchar();
        while(!isdigit(ch))
        {
            if(ch=='-')
                f=-f;
            ch=getchar();
        }
        while(isdigit(ch))
        {
            x=(x<<1)+(x<<3)+(ch^48);
            ch=getchar();
        }
        return x*f;
    }
    inline void put(int x)
    {
        if(x<0)
        {
            x=-x;
            putchar('-');
        }
        if(x>9)
            put(x/10);
        putchar(x%10+'0');
    }
    int n;
    int q;
    int ju[1050][1050];
    int dui;
    int ans;
    int main()
    {
        n=read();
        q=read();
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                ju[i][j]=read();
                if(i==j) ans+=ju[i][j];
            }
        ans%=2;
        for(int x,flag,i=1;i<=q;i++)
        {
            flag=read();
            if(flag==1||flag==2)
            {
                x=read();
                if(ju[x][x]) ans--;
                else ans++;
                ans=(ans+2)%2;
            }
            if(flag==3)
            {
                ans%=2;
                put(ans);
            }
        }
        olinr ~~(0^_^0)+love_nmr;
    }
  • 相关阅读:
    HDU--2024
    HDU--2021
    HDU--2020
    HDU--2019
    HDU--2018
    HDU--2017
    HDU--2016
    python全栈开发day13-迭代器、生成器、列表推导式等
    python全栈开发day12-函数的有用信息、带参数的装饰器、多个装饰器装饰一个函数、global和nonlocal的进一步解析和总结
    Python3使用Print输出带颜色字体
  • 原文地址:https://www.cnblogs.com/olinr/p/9583495.html
Copyright © 2011-2022 走看看