官方题解|欢乐赛#41
T1.整数部分
题目思路
本题可以利用C++的强制类型转化求浮点数的整数部分。
参考代码
T2.差值最大
题目思路
本题的思路是选出三个数的最大值和最小值,进行做差即可,实现的方法有很多,比如可以三个数轮流比较,也可以进行排序,也可以利用C++STL容器进行求解。
参考代码
T3.寻找倍数
题目思路
本题主要考查二维数组和双重循环这些语法知识,先开一个二维数组存A数组里面具体的值,然后再对整个数组里面的所有的元素看能不能被 mmm 整除即可。
参考代码
T4.冒泡排序
题目思路
本题考查冒泡排序的主要思想,冒泡排序的思想是重复地走访过要排序的数列,依次比较两个元素,如果它们的顺序错误就把它们交换过来。本题要利用 m控制冒泡排序的趟数。
参考代码
T5.最短路径
题目思路
本题是很经典的广搜问题,我们开一个dist数组,dist[i]表示从a到i的最短路径,一开始初始化为无穷大。每个数值只遍历一次,在广搜的时候通过dist[i]的值来判断是否这个点已经搜过。如果通过操作得到的数值是在合法的范围内且没被搜过就把这个数值加入队列,并继续搜,一直搜到bbb为止。
参考代码
T6.组队问题
题目思路
本题可以直接枚举有多少高手按照「1高手,2菜鸟」的组队方式进行组队,然后可以计算出和这些高手匹配完以后剩下的菜鸟数left,这些菜鸟按照「1菜鸟,2高手的方式组队」,能组队的数目是(n−i)/2(n - i) / 2(n−i)/2 和 left 的最小值,其中 n−in - in−i 是剩下的高手数目。
参考代码