官方题解 | 欢乐赛#53 题解
赛纲介绍
本次题目的总体题目难度如下,各位选手可以借此评估一下自身的技术水平
题目编号 题目名称 题目难度 T1 早起 入门 T2 小明的期末复习 入门 T3 小明的视疲劳字符串 入门 T4 求奇数和 入门 T5 小明的斜线总和 入门 T6 小明和论坛发帖 普及-
T1 早起
题目大意
根据今天是星期几以及小明起床的时间判断他今天是否会迟到,是的话输出 YES, 否则输出 NO。
题解思路
根据今天是星期几做分支判断,如果是周末的话那么无论几点起床都不会迟到,如果是工作日则需要起床时间为777点和 777 点以前。
参考代码
T2 小明的期末复习
题目大意
外星球的时间计算方法和地球完全不一致, 一年有 aaa 个月, 一个月有 bbb 天, 一天有 ccc 小时。
问当小明在外星球复习了 ddd 小时之后, 外星球经过了几年几月几天几小时呢?
题解思路
可以先计算一下在外星球的时间体系中, 一年内的总小时数 year,一个月的总小时数 month。
然后经过的年数 = d/yeard / yeard/year , 月数 = d%year/monthd \% year / monthd%year/month ,天数 = d%month/cd \% month /cd%month/c , 小时数 = d%cd \% cd%c
参考代码
T3 小明的视疲劳字符串
题目大意
给定一个只有大小写字母的字符串 sss , 以及数字 mmm。 小明每次操作可以将一个字符进行任意的修改。
能否在不超过 mmm 次操作的情况下,使得这个字符串在不区分大小写的情况下变成一个回文串。
题解思路
为了实现不区分大小写,首先将字符串中所有字符修改成大写字母。
之后对于所有对称的字符对, 判断是否相等, 如果不相等则需要进行一次改变。最后判断操作次数是否不超过mmm 并且输出答案即可。
参考代码
T4 求奇数和
题目大意
给定一个长度为 nnn 的数组, 可以从中选择两个数字 ai,aj(i≠j)a_i, a_j (i \ne j)ai ,aj (i=j)。求两个数总和是奇数的情况下,最大的和是多少。
题解思路
两个数相加总和为奇数只有一种情况,两个数字一个是偶数另一个是奇数。
因此可以遍历数组求最大的奇数和偶数分别是多少, 相加就可以得到最大的奇数总和。
如果全是奇数或者全是偶数,则无解,输出 −1-1−1
参考代码
T5 小明的斜线总和
题目大意
给定一个 n×mn \times mn×m 的二维数组,对于矩阵中所有的斜线(从左上往右下的斜线), 求斜线上数字总和的最大值。
题解思路
对于从左上到右下的斜对角线, 同一条线上的点的行编号 xxx 和列编号 yyy 满足条件 x−yx - yx−y 为固定值,
因此可以用 x−y+mx - y + mx−y+m 作为斜线的编号 (+m+m+m 可以保证数字是一个正数),并且在数组中记录每个斜线的总和, 最后求最大值即可。
参考代码
T6 小明和论坛发帖
题目大意
存在 mmm 个字符串,为暴戾性的语言。
小明要审核的帖子里有 nnn 个单词, 对于每个单词, 如果它存在一个子串是暴戾性语言的话, 那么这个单词就是违禁词。
请问这个贴子里一共有多少违禁词。
题解思路
使用string数组存储一下全部的 mmm 个字符串,对于贴子里的每一个单词, 遍历 mmm 个暴戾性语言,看是否是该单词的子串。判断子串可以手动写字符串匹配,也可以直接使用find函数来寻找。如果存在暴戾性子串, 则违禁词数量加一。
最后输出违禁词数量即可。
参考代码