试题链接: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】石油采集(匈牙利算法)的更多相关文章

  1. 【2018年全国多校算法寒假训练营练习比赛(第四场)-D】小明的挖矿之旅

    题目链接:https://www.nowcoder.com/acm/contest/76/D 做题时没注意到“无论出现在哪个格子”..题中也没说明一个格子只能经过一次,其实没有想象的复杂. 判断如果点 ...

  2. nowcoder2018年全国多校算法寒假训练营练习比赛(第一场)

    [气死我了 写完了博客发布 点看来一看怎么只剩下一半不到的内容了!!!!!!!!!!] [就把卡的那两道放上来好了 其余的不弄了 生气!!!!!] 可以说是很久没有打比赛了 今天这一场主要是  基础算 ...

  3. 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu

    闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...

  4. 2018年全国多校算法寒假训练营练习比赛(第一场)D N阶汉诺塔变形

    https://www.nowcoder.com/acm/contest/67/D 思路: 先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号 1 1 2 1 1 2 1 1 3 1 ...

  5. 2018年全国多校算法寒假训练营练习比赛(第一场)E 恋与程序员

    https://www.nowcoder.com/acm/contest/67/E 思路: dfs 代码: #include<bits/stdc++.h> using namespace ...

  6. 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈

    https://www.nowcoder.com/acm/contest/67/G 思路: 分形. 记录中间左边点的坐标,然后推出另外3个点的坐标,递归到最简单的情况. 代码: #include< ...

  7. 2018年全国多校算法寒假训练营练习比赛(第一场)C 六子冲

    https://www.nowcoder.com/acm/contest/67/C 思路: 模拟. 代码: #include<bits/stdc++.h> using namespace ...

  8. 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡

    链接:https://www.nowcoder.com/acm/contest/74/B来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第二场)F - 德玛西亚万岁

    链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 题目描述 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀 ...

随机推荐

  1. 我的Android进阶之旅------>关于使用Android Studio替换App的launcher图标之后仍然显示默认的ic_launcher图标的解决方法

    前言 最近做了一个App,之前开发该App的时候一直以来都是默认的launcher图标启动的, 今天美工换了一个App的launcher 图标,因此在Android Studio中将默认的lanche ...

  2. Python高级教程-列表生成式

    List Comprehensions(列表生成式) 列表生成式,是Python内置的非常简单却强大的可以用来创建list的生成式. 例如,要生成list:[1,2,3,4,5,6,7,8,9,10] ...

  3. 001-前端系列-react系列

    一.概述 原文地址:http://www.ruanyifeng.com/blog/2016/09/react-technology-stack.html 二.摘要 ES6 语法:教程 [可以了解] B ...

  4. Android学习六---OpenCV for android samples

    搭建好OpenCV4Android环境后,就要着手开发自己的应用了.对于一个没有OpenCV基础的人来开发OpenCV应用确实有点难度,不过我们可以从samples里学起,结合javadoc和万能的网 ...

  5. IO阻塞模型 非阻塞模型

       IO阻塞模型(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样:  所以,blocking IO的特点就是在IO执行的两 ...

  6. ng-click得到当前元素,

    直接上代码: <!DOCTYPE html> <html> <head> <title></title> <script src=&q ...

  7. Python3.x:pyodbc调用sybase的存储过程

    Python3.x:pyodbc调用sybase的存储过程 示例代码 # python3 # author lizm # datetime 2018-03-02 17:00:00 # -*- codi ...

  8. undefined symbol: PyUnicodeUCS4_AsUTF8String

    python 默认是ucs2编码进行编译,重新编译使用ucs4. python:     ./configure --enable-unicode=ucs4        make && ...

  9. 20145219 《Java程序设计》第05周学习总结

    20145219 <Java程序设计>第05周学习总结 教材学习内容总结 try.catch 1.求平均数程序示例 import java.util.Scanner; public cla ...

  10. SpringBoot 密码MD5加密

    public class PasswordEncrypt { public static String encodeByMd5(String string) throws NoSuchAlgorith ...