【2018年全国多校算法寒假训练营练习比赛(第四场)-A】石油采集(匈牙利算法)
试题链接:https://www.nowcoder.com/acm/contest/76/A
【思路】
每个‘#’的右边和下边如果也是‘#’说明这两个点构成通路,以此重构一幅图,然后找二分图的最大匹配。
【代码】
#include<bits/stdc++.h>
using namespace std;
char mp[][];
bool vis[];
vector<int>G[];
int mp1[][], match[], n;
bool dfs(int u)
{
for(int i = ; i < G[u].size(); i++)
{
int v = G[u][i];
if(!vis[v])
{
vis[v] = ;
if(match[v] == - || dfs(match[v]))
{
match[v] = u;
return ;
}
}
}
return ;
}
int main()
{
int t, cas = ;
cin>>t;
while(t--)
{
int num = ;
scanf("%d", &n);
for(int i = ; i < n; i++) scanf("%s", mp[i]);
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
if(mp[i][j] == '#') mp1[i][j] = ++num;
for(int i = ; i < n; i++)
for(int j = ; j < n; j++)
{
if(mp[i][j] == '#')
{
if(mp[i+][j] == '#') G[mp1[i][j]].push_back(mp1[i+][j]), G[mp1[i+][j]].push_back(mp1[i][j]);
if(mp[i][j+] == '#') G[mp1[i][j]].push_back(mp1[i][j+]), G[mp1[i][j+]].push_back(mp1[i][j]);
}
}
memset(match, -, sizeof match);
int ans = ;
for(int i = ; i <= num; i++)
{
memset(vis, , sizeof vis);
if(dfs(i)) ans++;
}
printf("Case %d: %d\n", ++cas, ans/);
}
return ;
}
【2018年全国多校算法寒假训练营练习比赛(第四场)-A】石油采集(匈牙利算法)的更多相关文章
- 【2018年全国多校算法寒假训练营练习比赛(第四场)-D】小明的挖矿之旅
题目链接:https://www.nowcoder.com/acm/contest/76/D 做题时没注意到“无论出现在哪个格子”..题中也没说明一个格子只能经过一次,其实没有想象的复杂. 判断如果点 ...
- nowcoder2018年全国多校算法寒假训练营练习比赛(第一场)
[气死我了 写完了博客发布 点看来一看怎么只剩下一半不到的内容了!!!!!!!!!!] [就把卡的那两道放上来好了 其余的不弄了 生气!!!!!] 可以说是很久没有打比赛了 今天这一场主要是 基础算 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu
闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)D N阶汉诺塔变形
https://www.nowcoder.com/acm/contest/67/D 思路: 先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号 1 1 2 1 1 2 1 1 3 1 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)E 恋与程序员
https://www.nowcoder.com/acm/contest/67/E 思路: dfs 代码: #include<bits/stdc++.h> using namespace ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈
https://www.nowcoder.com/acm/contest/67/G 思路: 分形. 记录中间左边点的坐标,然后推出另外3个点的坐标,递归到最简单的情况. 代码: #include< ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)C 六子冲
https://www.nowcoder.com/acm/contest/67/C 思路: 模拟. 代码: #include<bits/stdc++.h> using namespace ...
- 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡
链接:https://www.nowcoder.com/acm/contest/74/B来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求 ...
- 2018年全国多校算法寒假训练营练习比赛(第二场)F - 德玛西亚万岁
链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 题目描述 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀 ...
随机推荐
- 我的Android进阶之旅------>关于使用Android Studio替换App的launcher图标之后仍然显示默认的ic_launcher图标的解决方法
前言 最近做了一个App,之前开发该App的时候一直以来都是默认的launcher图标启动的, 今天美工换了一个App的launcher 图标,因此在Android Studio中将默认的lanche ...
- Python高级教程-列表生成式
List Comprehensions(列表生成式) 列表生成式,是Python内置的非常简单却强大的可以用来创建list的生成式. 例如,要生成list:[1,2,3,4,5,6,7,8,9,10] ...
- 001-前端系列-react系列
一.概述 原文地址:http://www.ruanyifeng.com/blog/2016/09/react-technology-stack.html 二.摘要 ES6 语法:教程 [可以了解] B ...
- Android学习六---OpenCV for android samples
搭建好OpenCV4Android环境后,就要着手开发自己的应用了.对于一个没有OpenCV基础的人来开发OpenCV应用确实有点难度,不过我们可以从samples里学起,结合javadoc和万能的网 ...
- IO阻塞模型 非阻塞模型
IO阻塞模型(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 所以,blocking IO的特点就是在IO执行的两 ...
- ng-click得到当前元素,
直接上代码: <!DOCTYPE html> <html> <head> <title></title> <script src=&q ...
- Python3.x:pyodbc调用sybase的存储过程
Python3.x:pyodbc调用sybase的存储过程 示例代码 # python3 # author lizm # datetime 2018-03-02 17:00:00 # -*- codi ...
- undefined symbol: PyUnicodeUCS4_AsUTF8String
python 默认是ucs2编码进行编译,重新编译使用ucs4. python: ./configure --enable-unicode=ucs4 make && ...
- 20145219 《Java程序设计》第05周学习总结
20145219 <Java程序设计>第05周学习总结 教材学习内容总结 try.catch 1.求平均数程序示例 import java.util.Scanner; public cla ...
- SpringBoot 密码MD5加密
public class PasswordEncrypt { public static String encodeByMd5(String string) throws NoSuchAlgorith ...