百度之星初赛(A)——T6
度度熊的01世界
度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成。
现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者两者均不是。
图像0的定义:存在1字符且1字符只能是由一个连通块组成,存在且仅存在一个由0字符组成的连通块完全被1所包围。
图像1的定义:存在1字符且1字符只能是由一个连通块组成,不存在任何0字符组成的连通块被1所完全包围。
连通的含义是,只要连续两个方块有公共边,就看做是连通。
完全包围的意思是,该连通块不与边界相接触。
本题包含若干组测试数据。 每组测试数据包含: 第一行两个整数n,m表示图像的长与宽。 接下来n行m列将会是只有01组成的字符画。
满足1<=n,m<=100
如果这个图是1的话,输出1;如果是0的话,输出0,都不是输出-1。
32 32 00000000000000000000000000000000 00000000000111111110000000000000 00000000001111111111100000000000 00000000001111111111110000000000 00000000011111111111111000000000 00000000011111100011111000000000 00000000111110000001111000000000 00000000111110000001111100000000 00000000111110000000111110000000 00000001111110000000111110000000 00000001111110000000011111000000 00000001111110000000001111000000 00000001111110000000001111100000 00000001111100000000001111000000 00000001111000000000001111000000 00000001111000000000001111000000 00000001111000000000000111000000 00000000111100000000000111000000 00000000111100000000000111000000 00000000111100000000000111000000 00000001111000000000011110000000 00000001111000000000011110000000 00000000111000000000011110000000 00000000111110000011111110000000 00000000111110001111111100000000 00000000111111111111111000000000 00000000011111111111111000000000 00000000111111111111100000000000 00000000011111111111000000000000 00000000001111111000000000000000 00000000001111100000000000000000 00000000000000000000000000000000 32 32 00000000000000000000000000000000 00000000000000001111110000000000 00000000000000001111111000000000 00000000000000011111111000000000 00000000000000111111111000000000 00000000000000011111111000000000 00000000000000011111111000000000 00000000000000111111110000000000 00000000000000111111100000000000 00000000000001111111100000000000 00000000000001111111110000000000 00000000000001111111110000000000 00000000000001111111100000000000 00000000000011111110000000000000 00000000011111111110000000000000 00000001111111111111000000000000 00000011111111111111000000000000 00000011111111111111000000000000 00000011111111111110000000000000 00000000001111111111000000000000 00000000000000111111000000000000 00000000000001111111000000000000 00000000000111111110000000000000 00000000000011111111000000000000 00000000000011111111000000000000 00000000000011111111100000000000 00000000000011111111100000000000 00000000000000111111110000000000 00000000000000001111111111000000 00000000000000001111111111000000 00000000000000000111111111000000 00000000000000000000000000000000 3 3 101 101 011
1 -1——————————————————————————————————————————————这道题在外面加一圈0就好了(这个是防止被一坨1卡的尴尬)然后就是联通块染色如果1有一个0两个就是0如果1有一个0也一个就是1不然就是-1
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int n,m,cnt1,cnt2; char s[155][155]; bool f,vis[155][155]; int xi[5]={0,0,1,0,-1},yi[5]={0,1,0,-1,0}; struct node{int x,y; }q[155*155]; void dfs(int xx,int yy,char c){int head=0,tail=1;q[0].x=xx; q[0].y=yy; vis[xx][yy]=1;while(head!=tail){int x=q[head].x,y=q[head].y; head++;for(int i=1;i<=4;i++){int sx=x+xi[i],sy=y+yi[i];if(sx>=0&&sx<=n+1&&sy>=0&&sy<=m+1&&s[sx][sy]==c&&!vis[sx][sy]){q[tail].x=sx; q[tail].y=sy; tail++; vis[sx][sy]=1;}}} } int main() {while(scanf("%d %d",&n,&m)==2){memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++) scanf("%s",s[i]+1);cnt1=0; cnt2=0;for(int i=0;i<=m+1;i++) s[0][i]='0',s[n+1][i]='0';for(int i=0;i<=n+1;i++) s[i][0]='0',s[i][m+1]='0';for(int i=0;i<=n+1;i++)for(int j=0;j<=m+1;j++)if(!vis[i][j]){if(s[i][j]=='1') cnt1++;else cnt2++;dfs(i,j,s[i][j]);}if(cnt1==1&&cnt2==2) printf("0\n");else if(cnt1==1&&cnt2==1) printf("1\n");else printf("-1\n");}return 0; }
View Code
转载于:https://www.cnblogs.com/lyzuikeai/p/7351301.html
百度之星初赛(A)——T6相关推荐
- 二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换
题目传送门 1 /* 2 二分搜索:在0-1e6的范围找到最小的max (ai - bi),也就是使得p + 1 <= a[i] + c or a[i] - c 3 比赛时以为是贪心,榨干智商也 ...
- 2016百度之星 - 初赛(Astar Round2B)解题报告
此文章可以使用目录功能哟↑(点击上方[+]) 被自己蠢哭,去年还能进一下复赛,今年复赛都没戏了... 链接→2016"百度之星" - 初赛(Astar Round2B) Prob ...
- 2015百度之星初赛(1)1006 旋转卡壳
矩形面积 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 2021百度之星初赛二(1001 -- 1003)
2021百度之星初赛二(1001 – 1003) 1001 题意: 给 a,b,每次 a,b会变为 a+b,a-b,问 k 次之后变成了哪两个数,对 998244353998244353 取模,多组数 ...
- 2016百度之星 - 初赛(Astar Round2A)解题报告
此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" ...
- 2021百度之星初赛第一场部分题解
写在前面 几个家长要求我写一些2021百度之星初赛第一场的题解. 1003 鸽子 原题链接 https://acm.hdu.edu.cn/showproblem.php?pid=6998 http:/ ...
- 2011百度之星初赛B圆环
这是百度之星2011初赛B中的第一道题,题目也很水,只要找到解题思路就OK了.. 题目: 时间限制:1000ms 描述 一个圆环上有n个位置,这n个位置按顺时针依次标号为1, 2, -, n.初始时圆 ...
- 百度之星初赛(1)解题报告
超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 2015Astar百度之星初赛 1005 序列变化
序列变换 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 2015Astar百度之星初赛 1001 超级赛亚ACMer
超级赛亚ACMer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
最新文章
- 如何条码打印软件工具箱窗格进行重新定位
- java生成可执行文件的方法总结
- UVa11988-破损的键盘 Broken Keyboard
- ios uiwindow弹窗_iOS-UIWindow详解
- wpf之代码设置背景图片
- 蓝桥杯2020年第十一届C++省赛第六题-成绩统计
- 运用mysql实现工资管理系统_企业工资管理系统的设计与实现(MySQL)
- 牛客14709 奇♂妙拆分 枚举
- python豆瓣电影爬虫
- R语言 - RStudio使用Git版本控制
- 自动创建 api 模拟数据
- tableView 取消 cell 默认下划线样式 - iOS
- java 实现macd算法_java尝试编写macd,试验顶背离底背离
- 数据结构之 红黑树(左倾红黑树) java实现
- php 顿号转义,PHP实现将标点符号正则替换为空格的方法
- Hibernate中的方言
- 【python】统计大小写字母个数和数字个数
- Html5工单系统,PESCMS Ticket(客服工单系统) V1.3.4 官方版
- 在线转换各种格式网站
- DeferShading + VSM + HDR + SSAO