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 ...
随机推荐
- Python中for、while、break、continue、if的使用
1.if - elif - else 的使用 格式:if 条件1: 条件1满足时执行的事件1 条件2满足时执行的事件2 elif 条件2: 条件2满足执行事件3 条件2满足执行事件4 e ...
- 继承users表,添加新字段成一个新表
1. Tools > Run manage.py Task 创建app,users startapp users 2.修改users中的models from django.db import ...
- oracle的JOB
前文再续,上面说的oracle的JOB,近期有些体会,记录一下: 零.创建JOB 创建JOB 1)创建一个存储过程.逻辑处理都在这个存储过程里面. 2)创建一个JOB运行此存储过程 -- 创建tabl ...
- EasyDSS流媒体服务器实现RTMP直播同步HLS录像和时移回放
本文转自EasyDarwin团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/74166337 "目前在市面上可以找到的 ...
- C# 超级狗 二次开发 读写数据 激活验证 存储数据库连接字符串
本文主要讲解如果使用C#语言来对超级狗进行二次开发,如果仅仅是做个激活的功能,可以参照另一篇博客,地址:http://www.cnblogs.com/dathlin/p/8487842.html 如果 ...
- 用vue实现百度搜索功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS GCD之dispatch_semaphore(信号量)
前言 最近在看AFNetworking3.0源码时,注意到在 AFURLSessionManager.m 里面的 tasksForKeyPath: 方法 (L681),dispatch_semapho ...
- iOS中数组遍历的方法及比较
数组遍历是编码中很常见的一种需求,我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点. 因为ios是兼容C语言的,所以c语言里面的最最常见的for循环遍历是没有问题的. 本文中用的数组是获取的系 ...
- Android中的“再按一次返回键退出程序”实现 (转) 按返回键退出程序时进行提醒
原文地址: https://blog.csdn.net/xichenguan/article/details/47030303 最近在研究 Android 编程方面的东西, 有了以下发现, 该 ...
- python2 使用matplotlib
背景 由於pyh在python3上沒法兒用,所以只能在python2上用pyh2 相應地也要在python2上使用matplotlib 下載 有兩種方法,pip & dnf pip爲: pip ...