官方题解 | 欢乐赛#72题解
赛纲介绍
本次题目的总体题目难度如下,各位选手可以借此评估一下自身的技术水平
题目编号 题目名称 题目难度 T1 皓仔的末四位数 入门 T2 皓仔今天做什么 入门 T3 皓仔的彩旗布置 入门 T4 皓仔的热门数字 入门 T5 皓仔的奥利奥 普及- T6 皓仔的队伍整理 普及-
T1 皓仔的末四位数
题目大意
读入一个整数,输出它的后四位数字。
注意:
如果后四位中前面有多余的 000,输出时不要保留这些前导零。
如果最后四位只有 000, 则直接输出 000 即可。
例如:
* 如果后四位是 002700270027,那么只输出 272727
* 如果后四位是 104010401040,那么输出 104010401040
题解思路
一个数字的后四位数, 可以通过对 100001000010000 取余得到。
因此本题输入数字 nnn 之后,直接输出 n%100000n \% 100000n%100000 即可。题目说明可以忽略前导零,因此当数字不足四位时候也可以直接输出。
参考代码
T2 皓仔今天干什么
题目大意
皓仔准备根据今天的气温来安排自己的活动。
现在给定今天的气温 ttt,皓仔会按照下面的规则决定自己做什么:
* 如果气温小于 101010,那么皓仔觉得太冷了,会待在家里,输出 Stay Home
* 如果气温不少于 101010 且小于 202020,那么皓仔会出门散步,输出 Go Walking
* 如果气温不少于 202020,那么皓仔会出门打篮球,输出 Play Basketball
* 请你根据输入的气温,输出皓仔今天的安排。
题解思路
多分支练习题: 首先定义 ttt 三个变量输入今天的温度,然后根据题目做以下判断:
* t<10t < 10t<10 时候,待在家里,输出 Stay Home
* 否则如果 t<20t < 20t<20 ,则出门散步,输出 Go Walking
* 否则说明温度大于 202020输出 Play Basketball
参考代码
T3 皓仔的彩旗布置
题目大意
一共有 nnn 面彩旗,编号为 111 到 nnn。一开始,所有彩旗的颜色都是 000,表示还没有上色。
接下来,皓仔会进行 mmm 次涂色操作。
每次操作会给出两个整数 x,cx,cx,c,表示把第 xxx 面彩旗染成颜色 ccc。
如果某一面彩旗被多次涂色,那么最后一次涂上的颜色才是最终颜色。
请你在所有操作结束后,输出这 nnn 面彩旗最终的颜色。
题解思路
使用数组来表示所有彩旗的颜色, 数组内元素初始值为 000。
在循环输入整个数组之后,开始进行 mmm 次操作, 每一次输入要染色的旗子 xxx 和颜色 ccc 之后,直接对数组进行修改:a[x] = c 。
最后遍历整个数组并且输出即可。
参考代码
T4 皓仔的热门数字
题目大意
给定 nnn 个整数,问在这 nnn 个数中,哪个数字出现的次数最多。
如果有多个数字出现次数并列最多,那么输出其中数值最小的那个。
请你帮皓仔找出这个数字。
题解思路
本题数据范围较小,可以直接循环嵌套完成最小数值的求解。
枚举每一个数字 a[i]a[i]a[i], 然后遍历整个数组看有多少个数字和 a[i]a[i]a[i] 相等。
将遍历得到的相同数字数量 cntcntcnt 和 当前数字 a[i]a[i]a[i] , 与目前得到的最大数量 mamama 以及当前答案 ansansans 做一个对比。
如果 cnt>macnt > macnt>ma 或者出现次数一样但是 a[i]a[i]a[i] 比 ansansans更小,则更新一下答案。
参考代码
T5 皓仔的奥利奥
题目大意
给定一个 nnn 行 mmm 列的数字矩阵,其中一个 3×33 \times 33×3 的九宫格如果满足以下条件,那么看起来像“奥利奥夹心”。
* 第 111 行的 333 个数全部是奇数
* 第 222 行的 333 个数全部是偶数
* 第 333 行的 333 个数全部是奇数
在整个矩阵中对于所有满足要求的“奥利奥九宫格”,求出九宫格元素和的最大值。
题解思路
可以直接枚举所有的九宫格并且进行判定。
首先可以枚举九宫格的左上角坐标 (i,j)(i, j)(i,j) , 注意行下标的枚举范围是 111 到 n−2n - 2n−2, 列下标的枚举范围是 111 到 m−2m - 2m−2。那么此时就可以得到行下标为 [i,i+2][i, i + 2][i,i+2],列下标为 [j,j+2][j, j + 2][j,j+2] 的一个九宫格。
题目要求其中第一行第三行都是奇数,第二行是偶数。
因此可以先设定一个标记 flag = true 默认该九宫格是奥利奥九宫格,然后如果九个点中任一点不符合要求,则将标记改为 false 。
如果最终标记为真, 则统计九宫格的总和并且更新答案的最大值。
需要注意本题的求总和会爆 intintint 。
参考代码
T6 皓仔的队伍整理
题目大意
一共有 nnn 名同学排成一队,编号为 111 到 nnn。第 iii 名同学都有两个属性:
* 身高 hih_ihi
* 体重 wiw_iwi
接下来进行 mmm 次整理队伍的操作。每次操作都会给出一个区间 [l,r][l,r][l,r] 和一种排序方式:
* 如果操作类型是 111,就把当前队伍中第 lll 个到第 rrr 个位置上的同学,按照体重从小到大排序
* 如果操作类型是 222,就把当前队伍中第 lll 个到第 rrr 个位置上的同学,按照身高从小到大排序
如果排序时有两个同学对应属性相同,则编号较小的同学排在前面。
所有操作完成后,请你输出最终队伍中每个位置上的同学编号。
题解思路
结构体排序的练习题, 本题中每个学生同时有身高,体重以及编号三个个信息,因此考虑用结构体数组进行存储。
本题中有两种操作类型分别是按照体重排序以及按照身高排序,因此可以手动写两个比较函数 cmp1 以及 cmp2 两个函数分别使用体重和身高进行排序。
对于每一次输入,根据操作类型进行对应的排序,最终输出排序后的学生编号就好。
参考代码