前言:第一次发欢乐赛题解,别喷。直接开始
现在的欢乐赛真的是越来越难了,最后一题都有位运算了
题号 题目名 知识点 T1 奇数判断 分支、输入输出 T2 小明和神秘宝箱 循环结构 T3 找出卧底 字符串、循环结构 T4 寻找最小公倍数 递归/递推 T5 对称矩阵 二维数组 T6 宝石项链 结构体、位运算(vector)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T1奇数判断
大意:A*B-C是否是一个奇数,是则输出YES;否则输出NO。
水题,直接判断。
时间复杂度:O(1)O(1)O(1)
空间复杂度:O(1)O(1)O(1)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T2小明和神秘宝箱
大意:输入N,接下来N行,每行两个整数LI,RIL_{I},R_{I}LI ,RI ,代表每个宝箱最少能获得LIL_{I}LI 个金币,最多能获得RIR_{I}RI 个金币。
思路:分别定义两个变量MINN和MAXN,来存最少金币之和和最多金币之和。注意:因为N最大为10510^5105,LI,RIL{_I},R_{I}LI ,RI 最大为10910^9109,故累加器得开LONG LONG(最大为101410^{14}1014)
时间复杂度:O(n)O(n)O(n)
空间复杂度:O(1)O(1)O(1)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T3找出卧底
大意:输入N个字符串,在不考虑大小写的情况下,如果字符串为WOHEYEZHI,则说明是卧底。找出一共有几个卧底
思路:先定义计数器CNT,然后遍历字符串,把所有字母统一转大写/小写。最后判断是否是WOHEYEZHI,是则累加。输出CNT
时间复杂度:O(∑i=1n∣Si∣)O(\sum_{i=1}^{n} |S_{i}|)O(∑i=1n ∣Si ∣)
空间复杂度:O(∑i=1n∣Si∣)O(\sum_{i=1}^{n} |S_{i}|)O(∑i=1n ∣Si ∣)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T4寻找最小公倍数
大意:给定一个长度为 N 的数组,对于数组中所有的数对AI,AJ(1≤I,J≤N)A_{I} ,A_{J} (1≤I,J≤N)AI ,AJ (1≤I,J≤N), 求AI和AJA_{I}和A_ {J}AI 和AJ 的最小公倍数的最大值。
作者语文不太好,直接复制题面,实在不能简化了
思路:双层FOR循环,找出所有可能的AI,AJA_{I},A_{J}AI ,AJ ,求出最大公约数,再使用ANS记录最大值。
解释一下__gcd:C++自带求最大公约数的函数,需要使用头文件#include<algorithm>。以后再也不用担心考试的时候忘记辗转相除法怎么写了
常规做法:
时间复杂度:O(n2logn)O(n^2\log n)O(n2logn)
空间复杂度:O(n)O(n)O(n)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T5对称矩阵
大意:T组样例,每组样例给一个N行N列的矩阵,如果矩阵上下对称且左右对称,输出YES,否则输出NO
思路:定义FLAG用来判断是否对称。遍历矩阵,如果不对称,FLAG标记。如果FLAG没被标记,输出YES,否则输出NO
时间复杂度:O(tn2)O(tn^2)O(tn2)
空间复杂度:O(n2)O(n^2)O(n2)
虽然样例不太严谨,t最大为10310^3103,n最大为10310^3103,时间复杂度最大为O(109)O(10^9)O(109),我竟然过了(每秒最多10810^8108次运算)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T6宝石项链
大意:给定一条有 N 个宝石的项链,每个宝石有对应的颜色值。每种颜色的美丽值为颜色值乘以该颜色所有宝石编号的异或和,求所有颜色美丽值的总和。
思路:定义一个结构体(也可以是PAIR)动态数组,存储每个宝石的颜色及其编号相同颜色的宝石进行异或,再乘以其颜色。将所有颜色宝石的美丽值加起来,便是整条项链的美丽值(别忘了开LONG LONG)
时间复杂度:O(nlogn)O(n\log n)O(nlogn)
空间复杂度:O(n)O(n)O(n)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
再次声明,第一次写题解,勿喷!求赞!求置顶!
恭喜你看到了这里,如有疑问请留言,虽然第一次写,但求奖品,@AC君球球了。
然后……评论区见!