石油采集(求联通区域) 2018多校寒假集训 (dfs+二分匹配)

题目:

链接:https://www.nowcoder.com/acm/contest/76/A
来源:牛客网

随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业。如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光。这些商人们有一种特殊的飞机,可以一瓢略过整个海面20米乘10米这么大的长方形。(上下相邻或者左右相邻的格子,不能斜着来)当然,这要求一瓢撇过去的全部是油,如果一瓢里面有油有水的话,那就毫无意义了,资源完全无法利用。现在,商人想要知道,在这片区域中,他可以最多得到多少瓢油。

地图是一个N×N的网络,每个格子表示10m×10m的正方形区域,每个区域都被标示上了是油还是水

输入描述:

测试输入包含多条测试数据
测试数据的第一行给出了测试数据的数目T(T<75)
每个测试样例都用数字N(N<50)来表示地图区域的大小,接下来N行,每行都有N个字符,其中符号’.’表示海面、符号’#’表示油面。

输出描述:

输出格式如下“Case X: M”(X从1开始),M是商人可以最多得到的油量。

示例1

输入

1
6
......
.##...
......
.#..#.
.#..##
......

输出

Case 1: 3



题意:中文题不解释



思路:way1:dfs爆搜就OK啊,,,这么简单的题目不知道为什么当时没有出
way2:二分匹配


代码1:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,m;
char mp[106][106];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int ans1,ans2;
void DFS(int i,int j)
{int nx,ny;if(i<0||i>=m||j<0||j>=n||mp[i][j]=='.')return ;if((i+j)%2==0)ans1++;else ans2++;mp[i][j]='.';for(int zz=0;zz<4;zz++){nx=i+dx[zz];ny=j+dy[zz];DFS(nx,ny);}return ;
}
int main()
{int i,j,res=0;int t;cin>>t;for(int o=1;o<=t;o++){cin>>m;n=m;getchar();for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%c",&mp[i][j]);}getchar();}for(i=0;i<m;i++)for(j=0;j<n;j++){if(mp[i][j]=='#'){ans1=0;ans2=0;DFS(i,j);res+=min(ans1,ans2);}}printf("Case %d: %d\n",o,res);}return 0;
}

 

代码2:(思路简单就不自己写了)

#include <iostream>
#include <queue>
#include <algorithm>
#include <string.h>
#include <math.h>
#include <map>
using namespace std;
const int maxn=2000;
int girl[maxn],used[maxn],line[maxn][maxn],path[60][60],temp1,temp2;
char a[60][60];
bool find(int x)
{for (int i=1;i<temp2;i++)if (line[x][i]&&!used[i]) //x与i有关系
    {used[i]=1;if (girl[i]==0||find(girl[i])) //名花无主或者还能腾位置;
        {girl[i]=x;return true;}}return false;
}
int main()
{int t,n,ans,tt;cin>>t;tt=1;while (t--){ans=0;temp1=temp2=1;memset(line,0,sizeof(line));memset(girl,0,sizeof(girl));memset(path,0,sizeof(path));cin>>n;for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){cin>>a[i][j];if ((i+j)%2==0)path[i][j]=temp1++;elsepath[i][j]=temp2++;}for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){if ((i+j)%2==1&&a[i][j]=='#'){if (path[i-1][j]>=1&&a[i-1][j]=='#')line[path[i-1][j]][path[i][j]]=1;if (path[i+1][j]>=1&&a[i+1][j]=='#')line[path[i+1][j]][path[i][j]]=1;if (path[i][j-1]>=1&&a[i][j-1]=='#')line[path[i][j-1]][path[i][j]]=1;if (path[i][j+1]>=1&&a[i][j+1]=='#')line[path[i][j+1]][path[i][j]]=1;}}for (int i=1;i<temp1;i++){memset(used,0,sizeof(used));if (find(i))ans++;}cout<<"Case "<<tt++<<": "<<ans<<endl;}
}

 

简单题

转载于:https://www.cnblogs.com/huangzzz/p/8446352.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Struts1 处理接收参数插入到数据库之后呈乱码的问题解决

Struts处理接收参数乱码问题&#xff08;actionForm接受的参数发送至数据库成乱码&#xff09;的解决办法: 第一步&#xff1a; 新建一个类如&#xff1a;EncodingActionServlet 继承 ActionServlet 覆盖父类process()方法代码如下&#xff1a;package com.aptech.jb.epet.we…

计算机nit题百度云,计算机NIT应用基础试题

一、 填空题(25分)文章地址&#xff1a;https://www.llysc.cn/content/24-24873.html1、完整的计算机由硬件系统 和软件系统 两大部件组成的。3、存储器可分为内存储器 和外存储器 两类。4、微型计算机硬件系统一般应包括主机、键盘、鼠标和显示器 。5、通过鼠标的基本操作方法…

前端(2)CSS

css&#xff1a;Cascading Style Sheet 层叠样式表——修饰、美化网页&#xff0c;化妆师CSS优先级&#xff0c;即是指CSS样式在浏览器中被解析的先后顺序。行间样式 > 内嵌css样式 > 外链css样式&#xff08;在style之前引入&#xff09;如果外链css样式在style之后引入…

某计算机公司的库存管理,《管理系统中计算机应用》应用题数据流程图汇总题及参考答案...

《管理系统中计算机应用》应用题及参考答案——数据流程图1、教学管理的主要工作过程是&#xff1a;系办(公室)输入班级和教学时间&#xff0c;查看教学计划表&#xff0c;确定本学期教学任务&#xff1b;根据本学期教学任务&#xff0c;查看教师表&#xff0c;制作开课任务书和…

perl命令行参数

查看perl版本 perl -version 对脚本进行语法检查 perl -c scriptname.pl&#xff0c;比如 perl -c zdd.pl对zdd.pl进行语法检查&#xff0c;并不执行。 调试perl脚本 perl -d script.pl 执行命令 perl -e print "hellow, world!\n" 注意&#xff0c;在Windows上-e后面…

Missing artifact net.sf.json-lib:json-lib:jar:2.4错误和Eclipse安装Maven插件错误

微信公众号&#xff1a;compassblog 欢迎关注、转发&#xff0c;互相学习&#xff0c;共同进步&#xff01; 有任何问题&#xff0c;请后台留言联系&#xff01; 1、配置Maven项目的pom.xml文件报错 &#xff08;1&#xff09;、错误描述&#xff1a;Missing artifact net.sf.j…

C linux Debug

1 gcc -g -o dest source.c gdb dest //执行可执行文件并DEBUG b 5 // 设计第五行为断点 run //运行程序 l //下一步 p //打印 s //跳入函数并下一步 转载于:https://www.cnblogs.com/lovemo1314/archive/2011/09/19/2181793.html

bzoj千题计划241:bzoj3864: Hero meet devil

http://www.lydsy.com/JudgeOnline/problem.php?id3864 题意&#xff1a; 给你一个DNA序列&#xff0c;求有多少个长度为m的DNA序列和给定序列的LCS为0&#xff0c;1&#xff0c;2.... 求LCS方式&#xff1a;f[i][j]max&#xff08;f[i-1][j],f[i][j-1],f[i-1][j-1]*(s[i]t[j]…

计算机网络工程本科培养计划,网络工程专业卓越计划本科培养方案2015版-西安电子科技大学计算机.doc...

网络工程专业卓越计划本科培养方案2015版-西安电子科技大学计算机.doc网络工程专业卓越计划本科培养方案一、培养目标及培养模式(一)培养目标网络工程专业培养服务于社会主义现代化建设需要的德、智、体、美全面发展&#xff0c;较好的掌握工科公共基础知识&#xff0c;系统地掌…

Apache日志配置

有时候我们需要定制Apache默认日志的格式和内容&#xff0c;比如增加或减少日志所记录的信息、改变默认日志文件的格式等。本文介绍可以用日志 记录的所有信息&#xff0c;以及如何设置Apache使其记录这些信息。    一、定义日志格式(4月3日) 很久以前&#xff0c;日志文件…

web前端【补充】CSS补充

css常用的一些属性&#xff1a; 1.去掉下划线 &#xff1a;text-decoration:none ;2.加上下划线&#xff1a; text-decoration: underline; 3.调整文本和图片的位置&#xff08;也就是设置元素的垂直对齐方式&#xff09;&#xff1a;vertical-align:-20px; 没设置之前&#xf…

语言教案 小小计算机,小班《小小手机本领大》语言教案

【活动目标】1、认识各种手机&#xff0c;了解手机的变化史。2、探索手机的秘密&#xff0c;知道手机的使用方法。【活动准备】各类手机。【活动过程】一、谈话引出课题。星期天你和妈妈去公园&#xff0c;不小心和妈妈走散了&#xff0c;小朋友们有什么办法能找到妈妈&#xf…

XNA游戏:Hello XNA

下面创建一个简单的Windows Phone 7的XNA 程序&#xff0c;只是一个Hello XNA的文本&#xff0c;从屏幕的左上角一直往右下角移动&#xff0c;通过该例子来开始Windows Phone 7 XNA的游戏编程。 新建一个项目后可以看到这样的一个项目工程结构&#xff0c;如图所示。 Content项…

最快超级计算机神威,我国超算第一不保, 2018年最快超级计算机超神威太湖之光2倍...

原标题&#xff1a;我国超算第一不保, 2018年最快超级计算机超神威太湖之光2倍计算机的进化可以说是日新月异&#xff0c;去年的我国的神威太湖之光与天河二号分别为全球最快的大型计算机榜单第一和第二名。但是2018年新的超级计算机性能排名又出来了&#xff0c;这次我国的神威…

Website for the introduction to Matlab and Java

http://www.aquaphoenix.com/#Lectures转载于:https://www.cnblogs.com/stoneresearch/archive/2011/09/21/4336541.html

20180223

<1>集合对象转数组 Object[] arrayOfObject list.toArray(); <2>数组复制 int[] arr1 {1, 2, 3, 4, 5}; int[] arr2 Arrays.copyOf(arr1, arr1.length); Arrays的copyOf()方法传回的数组是新的数组对象&#xff0c;所以您改变传回数组中的元素值&#xff0c;也…

html5 抽奖程序,真正的网页抽奖-JavaScript HTML5代码

圆盘抽奖*.{margin:0;padding:0;}#elm1{height:40px;background-color:#a00;}#elm2{height:50px;background-color:#0a0;}#wrap{position:relative;height:400px;}#bg{position:absolute;left:0;top:0;}#cell{position:absolute;left:0;top:0;}#control{position:absolute;left…

杂七杂八的小技巧

1、for循环 使用for循环过程中&#xff0c;数组的长度&#xff0c;使用一个变量来接收&#xff0c;这样有利于代码执行效率得到提高&#xff0c;而不是每走一次循环&#xff0c;都得重新计算数组长度 不推荐 for(var i0;i<arr.length,i){} 推荐 for(var i0,lenarr.length;i&…

计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法

为了让表格看起来更加直观&#xff0c;很多朋友都会在Excel中插入图片。那么&#xff0c;当我们大批量插入图片时&#xff0c;如果想要删除的话&#xff0c;应该怎么办呢&#xff1f;以下是系统城小编为您带来的电脑中删除Excel2010表格多余图片的三种方法&#xff0c;希望对您…

C#设计模式--模板方法模式(学习Learning hard 设计模式笔记)

class Program{static void Main(string[] args){//创建一个菠菜实例并调用模板方法Spinach spinach new Spinach();spinach.CookVegetable();Thread.Sleep(5000);//创建一个白菜实例并调用模板方法ChineseCabbage chineseCabbage new ChineseCabbage();chineseCabbage.CookV…