题解 B4125:知识竞赛

· · 题解

本题考查二维数组的使用,同时出现了擂台法求最值的几种变式。

为了避免变量名混乱,在这道题内,可以统一用 i 表示第几行,j 表示第几列。

用一个二重循环读入二维数组 a,同时计算每一列的水平和,其中第 j 列的总和为 s_j

接下来要找出最右边的、总和最大的 s_j 对应的下标

考虑用变量 bestcol 记录最好的下标,由于 0 这一列没被用到(总和为 0),可以让初值为 0

然后是第二轮,需要计算最大值的数量。同样是擂台法,记录最大值和最大值的个数。具体地,对于一个 a_{i,bestcol}