【普及组模拟赛】家族
题目描述
在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏。现在给你岛上的地图,求出岛上有多少个不同的家族。岛上的地图有n 行,每行有若干列,每个格子中要么是’空格表示大海,要么是‘ *’,表示河流或山丘,要么是小写字母,表示一户人家的姓氏。
输入
第一行是个数字 N,表示下面信息的行数,接下来是 N 行字符,每行由小写字母和*号组成,有些行的最前面也可能包含若干连续的空格,表示这些区域是大海,每一行最多不超过 200 个字符。
输出
一个数字,表示家族数。
样例输入
4
*zlw**pxh
l*zlwk*hx*
w*tyy**yyy
zzl
样例输出
3
数据范围限制
【数据范围】
10%的数据, n<=1
30%的数据, n<=10
100% 的数据, n<=100 每一行最多不超过 200 个字符
分析
这题其实就是细胞问题
遇到一个没有遍历过的点就从它开始搜,每搜一次,tj+1。
程序:
const
dx:array[1..4]of longint=(1,-1,0,0);
dy:array[1..4]of longint=(0,0,1,-1);
var
n,l,i,j,tj:longint;
a:array[0..301,0..301]of boolean;
s:string;
h:array[0..20001,1..2]of longint;
procedure work(p,q:longint);
var
i,w,t,x,y:longint;
begininc(tj);a[p,q]:=false;t:=1;w:=1;h[1,1]:=p;h[1,2]:=q;repeatfor i:=1 to 4 dobeginx:=h[t,1]+dx[i];y:=h[t,2]+dy[i];if (x>0)and(x<=n)and(y>0)and(y<=l)and(a[x,y]=true) thenbegininc(w);h[w,1]:=x;h[w,2]:=y;a[x,y]:=false;end;end;inc(t);until t>w;
end;beginassign(input,'family.in');reset(input);assign(output,'family.out');rewrite(output);readln(n);fillchar(a,sizeof(a),false);l:=0;for i:=1 to n dobeginreadln(s);for j:=1 to length(s) doif s[j]=' ' then a[i,j]:=false elseif s[j]='*' then a[i,j]:=false elsea[i,j]:=true;if length(s)>l then l:=length(s);end;tj:=0;for i:=1 to n dofor j:=1 to l doif a[i,j]=true then work(i,j);write(tj);close(input);close(output);
end.
转载于:https://www.cnblogs.com/YYC-0304/p/9500007.html
【普及组模拟赛】家族相关推荐
- 计蒜客信息学3月普及组模拟赛
A. 断幺九 题目链接 分值:100 时间限制:1000ms 测试点数目:10 B. 锈湖 题目链接 分值:100 时间限制:2000ms 测试点数目:10 C. 图 题目链接 分值:100 时间限 ...
- DD 摆磁铁(计蒜客信息学8月普及组模拟赛)
DD 摆磁铁 这道题来自 计蒜客信息学8月普及组模拟赛 普及组!! 把我一个TG选手看懵了 看来我要回去打普及了 题目大意 给出一个n个节点的树,要把树上给定的2*m个节点两两配对,两个节点配对的产生 ...
- 1983. 【普及组模拟赛】手机(mobile)
1983. [普及组模拟赛]手机(mobile) 题目描述 一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下.例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x ...
- 【计蒜客模拟赛系列】-计蒜客2021年8月普及组模拟赛
提前:本文中部分代码和思路有借鉴或摘抄计蒜客官方题解 赛后总结 本次模拟赛的难度总算正常了些 个人战绩: 220/400,排名61 ,太弱了,一大堆AK爷 题目质量评价: 题目相比CSP-J还是简单了 ...
- 【jzoj】2018.1.30NOIP普及组——模拟赛D组
@_@ 前言 写博客时间 2018/1/30 22:36. 感想:出数据的dalao我服! 正题 题目1:二项式展开式(jzoj2254) 输入一个整数,求展开(a+b)^n.展开方式为 (a+b)^ ...
- 【普及组模拟赛】作业
题目描述 光光上了高中,科目增多了.在长假里,光光的老师们都非常严厉,都给他布置了一定量的作业.假期里,光光一共有的时间是 k 小时.在长假前,老师们一共给光光布置了 n份作业,第 i 份作业需要的时 ...
- 【普及组模拟赛】游戏
题目描述 Atlantis Island 沉没以前,传说中的猫老大和 King 是好朋友--King 很喜欢赌博,这次 King和老朋友猫老大多年不见, 于是便邀请猫老大来玩一个游戏,猫老大应邀参加了 ...
- 【普及组模拟赛】手机
题目描述 一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下.例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x. 0 键按一下会出一个空格. 你的任务是读取若干 ...
- 【2020.10.17 牛客 普及组 模拟赛一】T2 牛牛的跳跳棋
题目描述 牛牛最近在玩一种叫做跳跳棋的游戏,棋盘可以看成是一个一维的线性数组,编号从1到n+1n+1n+1. 一开始牛牛的棋子位于第1个格子,游戏的最终目的是将棋子移动到第n+1n+1n+1个格子. ...
最新文章
- [微信小程序]物流信息样式加动画效果(源代码附效果图)
- burpsuite 实战指南
- Java中有哪些无锁技术来解决并发问题?如何使用?
- MySQL限制CPU资源使用_压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明...
- jrockit_JRockit – JRCMD有用的命令
- c mysql安装教程视频_MySQL安装教程 - Windows安装MySQL教程 - 小白式安装MySQL教程 - 青衫慧博客...
- 为什么中国人穷得只剩房子
- SQL Server创建视图
- Vue:vue组件生命周期
- mt4 指标 涨跌幅 颜色k线_通达信K线波段操盘指标公式
- TwinCAT软件的帮助如何使用
- 六十甲子亡命安葬山向宜忌
- ds12c887程序C语言,时钟芯片DS12C887使用说明详解.doc
- C#结合数据库开发通讯录管理系统
- 阿里云服务器没有公网IP
- windows10家庭版下找不到gpedit.msc
- 一口“臊子面”的背后,是西安小吃产业发展的缩影
- STM32串口中断接收标记USART_RX_STA 学习
- 设置InternetConnect的httpRequest连接数
- 中国计算机应用大会征稿通知,全球华人计算机教育应用大会(GCCCE)2015征稿启事...
热门文章
- [云炬python3玩转机器学习]4-3 训练数据集,测试数据集
- 我的个人网站更新了!
- 3DSlicer7:FAQ-1
- QString to const char*
- Qt小传——从诞生到发展、繁荣
- 【CyberSecurityLearning 附】批处理命令拓展(netsh/netstat/net)
- UE4中UnLua基础
- 【快乐水题】506. 相对名次
- SpringBoot @Configuration •@Import •@Conditional•@ImportResoure基本使用
- 排序二叉树BST(binary search/sort tree)