zoukankan      html  css  js  c++  java
  • bzoj1191[HNOI2006] 超级英雄Hero

    题目链接:bzoj1191

    题目大意:

    总共有m道题,选手有n种不同的“锦囊妙计”。主持人规定,每道题都可以从两种“锦囊妙计”中选择一种,而每种“锦囊妙计”只能用一次。选手只有答对了题才能接着答题,否则直接被淘汰。问最多通过的题数。


    题解:

    匈牙利求二分图最大匹配

    构图:题当公牛,锦囊当母牛。每道题都连上它能用的锦囊就好了

    要看题啊看清题啊。没看清题就交WA了两次qwq


    //如果我在GDKOI前做了这题,我可能就不会把day2T2想成单纯的贪心了TAT出来发现个个都会构图???

    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define maxn 1500
    
    int bf[maxn],n,m;
    bool ask[maxn],ed[maxn][maxn];
    bool ffindmn(int x)
    {
    	for (int i=0;i<n;i++)
    	  if (ed[x][i] && !ask[i]) 
    	  {
    		  ask[i]=true;
    		  if (bf[i]==-1 || ffindmn(bf[i]))
    		  {
    			  bf[i]=x;
    			  return true;
    		  }
    	  }
    	return false;
    }
    int main()
    {
    	//freopen("a.in","r",stdin);
    	//freopen("a.out","w",stdout);
    	int i,x,y,ans;ans=0;
    	scanf("%d%d",&n,&m);
    	memset(ed,0,sizeof(ed));
    	for (i=1;i<=m;i++)
    	{
    		scanf("%d%d",&x,&y);
    		ed[i][x]=ed[i][y]=true;
    	}
    	memset(bf,-1,sizeof(bf));
    	for (i=1;i<=m;i++)
    	{
    		memset(ask,false,sizeof(ask));
    		if (ffindmn(i)) ans++;
    		else break;
    	}
    	printf("%d
    ",ans);
    	return 0;
    }


  • 相关阅读:
    Vue
    多线程
    多进程进阶
    CentOS7中安装MySQL
    socket
    回顾
    Hibernate学习一:Hebinate入门以及一些小问题
    struts2学习二:Tomcat的部署目录和访问路径问题
    struts2学习一:hello struts2及struts2环境配置中遇到的问题
    Scanner几个问题与正则简介
  • 原文地址:https://www.cnblogs.com/Euryale-Rose/p/6527805.html
Copyright © 2011-2022 走看看