• bzoj 1059 矩阵游戏


    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1059

    题解:

      很玄学的问题……

      因为不同行或者不同列的格子,交换仍然不同行或者不同列

      所以把问题转化为从黑格子里选n个,它们的横纵坐标都不相同

      然后二分图匹配……两个子集分别是横坐标和纵坐标,如果求出的最大匹配为n,则成立,否则不成立

     1 #include<cstdio>
     2 #include<cstring>
     3 #define MAXN 410
     4 int n,cnt,match[MAXN],map[MAXN][MAXN],ans;
     5 bool check[MAXN];
     6 bool Hungary(int u)
     7 {
     8     for(int i=1;i<=n;i++)
     9     {
    10         if(!check[i]&&map[u][i])
    11         {
    12             check[i]=true;
    13             if(!match[i]||Hungary(match[i]))
    14             {
    15                 match[i]=u;
    16                 return true;
    17             }
    18         }
    19     }
    20     return false;
    21 }
    22 int main()
    23 {
    24     int t;
    25     scanf("%d",&t);
    26     while(t--)
    27     {
    28         ans=0;
    29         memset(match,false,sizeof(match));
    30         memset(map,0,sizeof(map));
    31         scanf("%d",&n);
    32         for(int i=1;i<=n;i++)
    33             for(int j=1;j<=n;j++)
    34                 scanf("%d",&map[i][j]);
    35         for(int i=1;i<=n;i++)
    36         {
    37             memset(check,false,sizeof(check));
    38             if(Hungary(i))ans++;
    39         }
    40         if(ans==n)printf("Yes
    ");
    41         else printf("No
    ");
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    systemtap没找到函数变量
    systemtap get var of the tracepoing
    如何在tracepoint上注册函数
    stap中的entry函数
    stap用法
    在submit_bio处使用stapn
    巴达努斯
    perf事件的切换
    perf原理再看
    内存回收的阈值
  • 原文地址:https://www.cnblogs.com/xqmmcqs/p/5965739.html
Copyright © 2020-2023  润新知