2017百度之星初赛A-1006(HDU-6113)
思路:在图的外面包一圈'0'字符,然后dfs统计'0'字符的个数和'1'字符的个数。结果如下(num0表示0字符的个数,num1表示1字符的个数):
num0 == 1 && num1 == 1 : 结果为1
num0 == 2 && num1 == 1 : 结果为0
else 结果为-1
这个方法非常巧妙,可惜比赛时没想出来,直接在原图上dfs然后WA了一发后,发现有很多特殊的样例,如:
(1)
00100 00100 00100 00100
(2)
11111 10001 11111 10001 11111
直接dfs的话,不好判断1字符串块里面是否包含有且仅有一个0字符串块。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n, m;
int amt0, amt1;
char mat[105][105];
bool vis[2][105][105];
const int dirs[][2] = {{ -1, 0}, {1, 0}, {0, -1}, {0, 1}};
void dfs(int x, int y, char c) {
vis[c == '0' ? 0 : 1][x][y] = true;
for(int i = 0; i < 4; ++i) {
int nx = x + dirs[i][0], ny = y + dirs[i][1];
if(nx >= 0 && nx <= n + 1 && ny >= 0 && ny <= m + 1 && !vis[c == '0' ? 0 : 1][nx][ny] && mat[nx][ny] == c)dfs(nx, ny, c);
}
}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif // ONLINE_JUDGE
while(~scanf("%d%d", &n, &m)) {
for(int i = 1; i <= n; ++i)scanf("%s", mat[i] + 1);
for(int r = 0;r <= n + 1;r++)mat[r][0] = mat[r][m + 1] = '0';
for(int c = 0;c <= m + 1;c++)mat[0][c] = mat[n + 1][c] = '0';
memset(vis, 0, sizeof(vis));
amt0 = 0, amt1 = 0;
for(int i = 0; i <= n + 1; ++i) {
for(int j = 0; j <= m + 1; ++j) {
if(!vis[1][i][j] && mat[i][j] == '1') {
amt1++;
dfs(i, j, '1');
}
if(!vis[0][i][j] && mat[i][j] == '0') {
amt0++;
dfs(i, j, '0');
}
}
}
if(amt0 == 1 && amt1 == 1)printf("1\n");
else if(amt0 == 2 && amt1 == 1)printf("0\n");
else printf("-1\n");
}
return 0;
}
2017百度之星初赛A-1006(HDU-6113)的更多相关文章
- 2014百度之星初赛第二场hdu 4831 Scenic Popularity
Scenic Popularity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU - 6112 2017百度之星初赛A 今夕何夕
今夕何夕 Accepts: 1345 Submissions: 5533 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- HDU 6118 2017百度之星初赛B 度度熊的交易计划(费用流)
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 6119 2017百度之星初赛B 小小粉丝度度熊 (二分)
小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU - 6114 2017百度之星初赛B Chess
Chess Accepts: 1805 Submissions: 5738 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768 ...
- HDU - 6113 2017百度之星初赛A 度度熊的01世界
度度熊的01世界 Accepts: 967 Submissions: 3064 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 327 ...
- 2017百度之星初赛B-1002(HDU-6115)
一.思路 这题“看似”比较难搞的一点是,一个节点上有多个办公室,这怎么求?其他的,求树中任意两个节点的距离(注意:没有最远或最最进这一说法,因为树上任意两个节点之间有且仅有一条路径.不然就有回路了,对 ...
- 2017"百度之星"程序设计大赛 - 初赛(A) [ hdu 6108 小C的倍数问题 ] [ hdu 6109 数据分割 ] [ hdu 6110 路径交 ] [ hdu 6112 今夕何夕 ] [ hdu 6113 度度熊的01世界 ]
这套题体验极差. PROBLEM 1001 - 小C的倍数问题 题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6108 (2017"百度之星 ...
- HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
随机推荐
- MoreEffectiveC++Item35 条款25 将constructor和non-member functions虚化
1.virtual constructor 在语法上是不可将构造函数声明成虚函数,虚函数用于实现"因类型而异的行为",也就是根据指针或引用所绑定对象的动态类型而调用不同实体.现在所 ...
- ECMAScript 6.0 学习笔记
1.ECMAScript 6.0(也就是ES2015 以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得 JavaScript 语言可以用来 ...
- c# 一个记录日志的通用方法
public static string WriteFile(string strText, string path) { Encoding code = Encoding.GetEncoding(& ...
- 关于命名空间namespace
虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits).接口.函数和常量. 在声明命名空间之前唯一合法的代码是用于定义源文件编码方 ...
- 【PL/SQL编程】条件语句
1. if...then语句 if <condition_expression> then plsql_sentence; end if; declare -- Local variabl ...
- EasyDSS流媒体服务器Linux emerg getpwnam("xxx") failed解决办法
本文转自EasyDarwin开源团队Alex的博客:http://blog.csdn.net/cai6811376/article/details/73770943 EasyDSS 流媒体服务器是什么 ...
- 自定义view:view的绘制流程
1.view的绘制流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw. ...
- [Math]Pi(1)
数学知识忘地太快,在博客记录一下pi的生成. 100 Decimal places 3.14159265358979323846264338327950288419716939937510582097 ...
- 程序设计入门-C语言基础知识-翁恺-第五周:函数-详细笔记(五)
目录 第五周:函数 5.1 函数 5-2 使用函数 5.3 课后习题 第五周:函数 5.1 函数 什么是函数? 函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或一个值. 函数声明语法 返回 ...
- phpcms sitemaps修改
phpcms\modules\admin\templates\googlesitemap.tpl.php 修改selected到天和将20的生成数量改为大的数值,可以更快的操作