1 条题解

  • 0
    @ 2026-5-5 22:59:10

    不需要限制对于所有边 iji\to j 满足 i<ji<j 的做法。

    先考虑如果已知邻接矩阵 AA 能不能对于每一对 (i,j)(i,j) 求出 iijj 的路径条数奇偶性,我们记为 fi,jf_{i,j},在题目中已经给出。可以发现,我们令 fi,i=1f_{i,i}=1,则

    $$f_{i,j}=\sum_{k\to j}f_{i,k}=\sum_{k}f_{i,k}a_{k,j}(i\neq j)\implies F=FA+I\implies A=I-F^{-1}$$

    矩阵求逆即可。(同时请教一个问题: FF 不存在逆是否等价于原图不是 DAG?)

    #include <algorithm>
    #include <iostream>
    #include <vector>
    #include <bitset>
    #include <string>
    #include <array>
    
    using namespace std;
    
    array<bitset<1500>,750> matrix;
    
    int main(int argc,char* argv[],char* envp[])
    {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int cnt;
        cin>>cnt;
        for(int i=0;i<cnt;matrix[i].set(i),matrix[i].set(i+cnt),i++)
            for(int j=i+1;j<cnt;j++)
            {
                char tmp;
                cin>>tmp;
                matrix[i][j]=tmp-'0';
            }
        for(int i=0;i<cnt;i++)
            for(int j=0;j<i;j++)
                if(matrix[j][i])
                    matrix[j]^=matrix[i];
        int answer=0;
        for(int i=0;i<cnt;i++)
            for(int j=i+1;j<cnt;j++)
                answer+=matrix[i][j+cnt];
        cout<<answer;
        return 0;
    }
    

    场上在想能不能直接递推,以为 Gold 不会那么简单。原来是我想复杂了。

    • 1

    信息

    ID
    7586
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    17
    已通过
    7
    上传者