KDY-CODUCK-D3深搜1模拟赛补题报告

S14463
2024.7.23

分数

T1 山峰和山谷 100/100
T2 沼泽问题 100/100
T3 蚂蚁路线问题 100/100

题解

T1

FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。
为了能够对旅程有一个安排,他想知道山峰和山谷的数量。
给定一个地图,为FGD想要旅行的区域,地图被分为 n×n 的网格,每个格子 (i,j) 的高度 w(i,j) 是给定的。
若两个格子有公共顶点,那么它们就是相邻的格子,如与 (i,j) 相邻的格子有(i−1,j−1),(i−1,j),(i−1,j+1),(i,j−1),(i,j+1),(i+1,j−1),(i+1,j),(i+1,j+1)。
你的任务是,对于给定的地图,求出山峰和山谷的数量,如果所有格子都有相同的高度,那么整个地图即是山峰,又是山谷。
数据范围 n 1e3
w[i][j] 1e9
山峰定义为:一个连通块,对于每一个属于此连通块的点,有:这个点周围所有与它八连通的点值都比这个点的值要小。
山谷定义为:一个连通块,对于每一个属于此连通块的点,有:这个点周围所有与它八连通的点值都比这个点的值要大。

样例
5
8 8 8 7 7
7 7 8 8 7
7 7 7 7 7
7 8 8 7 8
7 8 8 8 8
输出 2 1

分析

1.定义判断
定义中提到在“连通块”中
而根据样例
可得“连通块”为相同数字组成的8联通区域
证明:若连通块中有不相同的数据,则必然会有某个点的临接点值大于该点值,
同时该点的邻接点也会有该点作为邻接点值小于值较大点的值
则该连通块既不构成山峰也不构成山谷,还会影响其他点的搜索
故“连通块”指代相同数值的点构成的8联通区域
在主函数中可以遍历vis二维数组,每一次完整的深搜(不能提前结束必须全图搜完,原因自己想)
会搜索出一块完整的连通块,再在搜索时判断是山峰或山谷(有“都”字则判不等)
根据“如果所有格子都有相同的高度,那么整个地图即是山峰,又是山谷”,一次搜索会搜索整个地图,就不会出现判断,主函数输出“1 1”即可。

AC代码

要啥AC代码,自己写(((

T2、3

T2

达达要穿过一片N*N(2<=N<10)的沼泽地,入口和出口分别在左上角和右下角。沼泽地中的路分别放0和1,0表示可以走的道路,1表示不能走的泥沼,入口和出口处肯定是0。沼泽地行走的规则如下所示:即从某点开始,有四个方向可走,前进方格中数字为0时表示可通过,为1时表示不可通过,要另找路径。 找出所有从入口(左上角)到出口(右下角)的路径(不能重复),输出路径总数,如果无法到达,则输出0。

T3

桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。

小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。

对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下图所示:

蚂蚁一共有3种移动路线:

路线1:(1,1) - (1,2) - (1,3) - (2,3)
路线2:(1,1) - (1,2) - (2,2) - (2,3)
路线3:(1,1) - (2,1) - (2,2) - (2,3)
T2不会就背代码,还不会建议走文化去
T3两次深搜不会爆,也可以先递推

极!品!结!束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值