CCF GESP 2026年6月认证 C++ 4级
题目描述
小杨同学正在游玩经典游戏「扫雷」,他想自己生成一个「扫雷」的地图。
小杨同学希望生成的地图大小为 $n$ 行 $m$ 列,一共 $n×m$ 个区块。区块行号为 $1,2,⋯,n$,列号为 $1,2,⋯,m$。其中一些区块为雷区,其它区块不为雷区。
小杨同学指定了 $q$ 个区块为雷区,而其它区块均不为雷区。小杨同学希望你帮忙计算非雷区的区块,每个区块与多少个雷区相邻?
我们定义区块相邻,当且仅当两个区块至少有一个公共顶点(也就是说对于不在地图边缘的区块,周围 8 个区块均与其相邻)。
输入格式
输入包含 $q+1$ 行。
第一行,三个正整数 $n$, $m$ 和 $q$,分别表示地图行数和列数,以及雷区数量。
接下来的 $q$ 行,每行有 2 个整数,分别表示第 $i$ 个雷区的行号和列号。
保证输入的雷区不重复。
输出格式
输出 $n$ 行,每行 $m$ 个字符(使用空格分割),对于第 $i$ 行第 $j$ 列,输出地图对应区块的信息:
- 如果为雷区,输出
*; - 如果不是雷区,输出其相邻雷区数量(输出 0 到 8 中的一个数字)。
样例说明
样例 1
3 4 4
1 1
1 3
2 4
3 2
* 2 * 2
2 3 3 *
1 * 2 1
根据输入,在 3×4 的地图上有 4 个雷区,分别是 (1,1),(1,3),(2,4) 和 (3,2),如输出样例中 * 所示,其它非雷区区块的相邻雷区数量可以直观看出。
数据范围
$3≤n,m≤500$, $1≤q≤n⋅m$。
输入的雷区必定在地图内且不重复,注意行号和列号均从 1 开始。
题目描述
一个人的身高体重指数(BMI)等于其体重(千克为单位)除以其身高(米为单位)的平方。
例如,一个体重为 50 kg,身高为 1.6 m 的人的身高体重指数为 $50 kg/1.6 m/1.6 m=19.53125 kg/m^{2}$。
现在有 $n$ 个小朋友,第 $i$ 个小朋友的编号为 $i$,体重为 $w_{i}$,身高为 $h_{i}$。
请按照身高体重指数从高到低为小朋友们排序,数据保证不存在两个小朋友的身高体重指数完全相同。输出排序后小朋友的编号。
输入格式
输入 3 行,
第一行为一个正整数 $n$,表示小朋友的个数;
第二行为 $n$ 个整数 $w_{1},w_{2},⋯,w_{n}$ 表示小朋友们的体重,单位为 kg;
第三行为 $n$ 个浮点数 $h_{1},h_{2},⋯,h_{n}$ 表示小朋友们的身高,单位为 m。
输出格式
输出一行 $n$ 个数,表示按照身高体重指数从高到低排序后的编号。
样例说明
样例 1
3
45 33 39
1.55 1.33 1.44
3 1 2
三个小朋友(编号依次为1,2,3)的身高体重指数分别为(保留两位小数的结果):18.73,18.66,18.81,故排序后输出的编号为 3 1 2。
数据范围
$1≤n≤1000$,$10≤w_{i}≤100$,$0.8≤h_{i}≤1.9$,$h_{i}$ 均恰有两位小数。