• bzoj1059: [ZJOI2007]矩阵游戏(二分图匹配)


    1059: [ZJOI2007]矩阵游戏

    题目:传送门 

    题解:

       为了赶上苏大佬的光速的脚步...刷了题水题,不过苏大佬好像一早就搞定了,所以也没有什么关系了对吧!

       其实说水题的话还不能完全算是,但如果要是发散一下思维很容易就精A:

       因为对于同一列或者同一行的棋子来说,不论如何变化,始终都在同一列或者同一行。

       那么如果能够组成对角线,那只要找到n个不能同行也不能同列的棋子就ok啊。

       再细想一下,解法就是公牛母牛配啊

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 int f[1100];
     5 int n,m,ans;
     6 bool map[510][510];
     7 bool c[510];
     8 bool find_muniu(int x)
     9 {
    10     for(int j=1;j<=n;j++)
    11         if(map[x][j])
    12             if(c[j]==true)
    13             {
    14                 c[j]=false;
    15                 if(f[j]==0 || find_muniu(f[j]))
    16                 {
    17                     f[j]=x;
    18                     return true;
    19                 }
    20             }
    21     return false;
    22 }
    23 int main()
    24 {
    25     int T;
    26     scanf("%d",&T);
    27     while(T--)
    28     {
    29         scanf("%d",&n);
    30         memset(map,false,sizeof(map));
    31         for(int i=1;i<=n;i++)
    32             for(int j=1;j<=n;j++)
    33                 scanf("%d",&map[i][j]);
    34         int ans=0;
    35         memset(f,0,sizeof(f));
    36         for(int i=1;i<=n;i++)
    37         {
    38             memset(c,true,sizeof(c));
    39             if(find_muniu(i)==true)ans++;
    40         }
    41         if(ans<n)printf("No
    ");
    42         else printf("Yes
    ");
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    各种排序算法的时间复杂度和空间复杂度
    fork/join框架
    全文检索之solr学习
    【设计模式最终总结】概述、分类、原则
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(75)-微信公众平台开发-用户管理
    下拉列表自己封装的
    下拉列表
    一个原生的JavaScript拖动方法
    JavaScript的jsonp
    angular2 的依赖注入
  • 原文地址:https://www.cnblogs.com/CHerish_OI/p/8504575.html
Copyright © 2020-2023  润新知