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;
    }
    

      

  • 相关阅读:
    Leetcode 16.25 LRU缓存 哈希表与双向链表的组合
    Leetcode437 路径总和 III 双递归与前缀和
    leetcode 0404 二叉树检查平衡性 DFS
    Leetcode 1219 黄金矿工 暴力回溯
    Leetcode1218 最长定差子序列 哈希表优化DP
    Leetcode 91 解码方法
    Leetcode 129 求根到叶子节点数字之和 DFS优化
    Leetcode 125 验证回文串 双指针
    Docker安装Mysql记录
    vmware虚拟机---Liunx配置静态IP
  • 原文地址:https://www.cnblogs.com/ezyzy/p/7839435.html
Copyright © 2011-2022 走看看