zoukankan      html  css  js  c++  java
  • Codeforces 382 D Permutations

    题目大意:

    给出一张二分图,这张二分图完美匹配的个数是奇数,求删掉第$i(1<=i<=m)$条边后完美匹配个数的奇偶性。

    设这张图的邻接矩阵为$A$,那么完美匹配的个数为$A$的积和式,即
    $$sum_p prod_i^n a_{pi}$$
    因为乘上-1不影响奇偶性,所以这个东西和行列式的奇偶性是一样的。
    因为矩阵的行列式可以表示为某一行或一列上所有元素与这个位置的代数余子式之积的和,即
    $$sum _{i=1}^{n}a_{i,j} imes m_{i,j}$$

    $$sum _{j=1}^{n}a_{i,j} imes m_{i,j}$$
    $m_{i,j}$为这个位置的代数余子式,所以我们只要求出每个位置的代数余子式就能知道任意$a_{i,j}$从$1$变$0$答案会改变多少

    设$A$的伴随矩阵为$C$,根据定义$C_{i,j}=m_{j,i}$,即$m$所构成的矩阵的转置,而$C=|A| imes A^{-1}$,这题就可以bitset压位跑过了

    证明$C=|A| imes A^{-1}$:
    根据定义$C_{i,j}=m_{j,i}$,因此
    $$(C imes A)_{i,j} \ =sum_{k=1}^{n} C_{i,k} imes A_{k,j} \=sum_{k=1}^{n} m_{k,i} imes A_{k,j}$$
    这个式子相当于把第$i$列复制到第$j$列,然后在第$j$列展开求行列式。
    根据常识,当$i=j$时,$(C imes A)_{i,j}=|A|$
    当$i!=j$时,$(C imes A)_{i,j}=0$
    则$C imes A=|A| imes I,C=|A| imes A^{-1}$

     

    #include<bits/stdc++.h>
    #define N 500005
    using namespace std;
    int n,m;
    bitset<2048>a[2005],b[2005];
    int x[N],y[N];
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&x[i],&y[i]);
            a[x[i]][y[i]]=1;
        }
        for(int i=1;i<=n;i++)b[i][i]=1;
        for(int i=1;i<=n;i++)
        {
            int p=0;
            for(int j=i;j<=n;j++)if(a[j][i]){p=j;break;}
            if(p!=i)swap(a[p],a[i]),swap(b[p],b[i]);
            for(int k=1;k<=n;k++)if(a[k][i]&&k!=i)a[k]^=a[i],b[k]^=b[i];
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<i;j++)
            {
                int t1=b[i][j],t2=b[j][i];
                b[i][j]=t2;b[j][i]=t1;
            }
        }
        for(int i=1;i<=m;i++)
        {
            if(b[x[i]][y[i]])
            {
                puts("NO");
            }
            else puts("YES");
        }
        return 0;
    }
    

      

  • 相关阅读:
    C#操作Word完全功略
    Ubuntu安装BackExec Remote Agent for Linux
    curl快速实现网速测试
    GitHub已将持续集成服务器Janky开源
    串行(Sequential)、并发(Concurrent)、并行(parallel)与分布式(distributed)
    使用ld的wrap选项替换已有库函数
    Linux获取程序编译参数
    配置Apache+Tomcat实现SSO(单点登录)
    ipad+Blackberry构建临时网络访问
    巧解 JavaScript 中的嵌套替换
  • 原文地址:https://www.cnblogs.com/ezyzy/p/7839435.html
Copyright © 2011-2022 走看看