hdu1281 棋盘游戏 二分图最大匹配

hdu1281 棋盘游戏 二分图最大匹配

大家好,又见面了,我是全栈君。

小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车的互相攻击。 
所以现在Gardon想让小希来解决一个更难的问题,在保证尽量多的“车”的前提下,棋盘里有些格子是可以避开的,也就是说,不在这些格子上放车,也可以保证尽量多的“车”被放下。但是某些格子若不放子,就无法保证放尽量多的“车”,这样的格子被称做重要点。Gardon想让小希算出有多少个这样的重要点,你能解决这个问题么?

 

先DFS求出点数,再用二分匹配求解

hdu1281 棋盘游戏 二分图最大匹配hdu1281 棋盘游戏 二分图最大匹配

 1 #include<stdio.h>  2 #include<string.h>  3  4 const int maxn=1e5+5;  5 const int maxm=1e5+5;  6  7 int head[maxn],point[maxm],nxt[maxm],size;  8 int match[maxn],vis[maxn];  9 int get[maxn]; 10 11 void init(){ 12 memset(head,-1,sizeof(head)); 13 size=0; 14 memset(match,-1,sizeof(match)); 15 memset(get,-1,sizeof(get)); 16 } 17 18 void add(int a,int b){ 19 point[size]=b; 20 nxt[size]=head[a]; 21 head[a]=size++; 22 } 23 24 int del; 25 26 int dfs(int s,bool F){ 27 for(int i=head[s];~i;i=nxt[i]){ 28 if(!F&&i==del)continue; 29 int j=point[i]; 30 if(!vis[j]){ 31 vis[j]=1; 32 if(match[j]==-1||dfs(match[j],F)){ 33 if(F){ 34 match[j]=s; 35 get[s]=i; 36  } 37 return 1; 38  } 39  } 40  } 41 return 0; 42 } 43 44 45 int main(){ 46 int T=0; 47 int n,m,k; 48 while(scanf("%d%d%d",&n,&m,&k)!=EOF){ 49 ++T; 50  init(); 51 while(k--){ 52 int a,b; 53 scanf("%d%d",&a,&b); 54 add(a,n+b); 55  } 56 int ans1=0; 57 for(int i=1;i<=n;++i){ 58 memset(vis,0,sizeof(vis)); 59 if(dfs(i,1))ans1++; 60  } 61 int ans=0; 62 for(int i=1;i<=n;++i){ 63 if(get[i]!=-1){ 64 del=get[i]; 65 match[point[del]]=-1; 66 get[i]=-1; 67 memset(vis,0,sizeof(vis)); 68 if(!dfs(i,0))ans++; 69 get[i]=del; 70 match[point[del]]=i; 71  } 72  } 73 printf("Board %d have %d important blanks for %d chessmen.\n",T,ans,ans1); 74  } 75 return 0; 76 }

View Code

 

转载于:https://www.cnblogs.com/cenariusxz/p/6578414.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108612.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • xshell7激活成功教程版好用么_ppt官方下载免费版

    xshell7激活成功教程版好用么_ppt官方下载免费版文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimport.

    2022年10月12日
  • 浅谈js原型和原型链接_js原型链阮一峰

    浅谈js原型和原型链接_js原型链阮一峰一、简述对于javascript对象(函数)原型和原型链的理解,其实不那么难,简单来说,需要理解什么是原型,怎么访问原型,什么是原型链,怎么通过原型链去访问原型,就可以大概理清楚原型和原型链的基础知识。二、浅析1、何为原型在js引擎启动的时候,其内核就生成了最基本的Object和Function的原型内容,也就是最原始最自然的代码。(1)Object的原型是一个对象变量,该对象变量存…

    2022年10月29日
  • 用python下载b站视频_tagB站

    用python下载b站视频_tagB站作者|Rocky0429来源|Python空间大家好,我是Rocky0429。B站,作为Z世代的新式社交性学习平台,对我来说一直只是一个学习的好去处,学习这事儿肯定是我留在B站的唯一原因…如果你非要问我为什么之前一直在循环播放“听狄胖的话”,那我也只能告诉你是我不小心点了鬼畜区,想知道小元芳是不是真的有许多问号…我承认是我真的太年轻了,对知识总是太饥渴…好了,这一篇儿可以翻过了,下面说点正经的…我Python学习的很多视频都是在B站上看的,刚.

  • idea主题样式插件[通俗易懂]

    idea主题样式插件[通俗易懂]1、File->Settings…->Plugins中搜索MaterialThemeUI,然后点击安装,安装完成后重启Idea2、重启后会自动进入设置样式界面3、进入后可自己重新配置File->Settings…->Editor->ColorScheme进行设置还有背景图设置在plugin中添加backgroundIma…

  • java注解生成xml和包含CDATA问题

    百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和xml中CDATA 问题的解决方法!

  • Silverlight 引路蜂二维图形库示例:虚线类型

    Silverlight 引路蜂二维图形库示例:虚线类型

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号