甘南州城乡建设局网站,天河手机建网站,保定高端模板建站,母婴产品网站模板题目
约翰参加了一场步行比赛。
比赛为期 N 天#xff0c;参赛者共 M 人#xff08;包括约翰#xff09;。
参赛者编号为 1∼M#xff0c;其中约翰的编号为 P。
每个参赛者的每日步数都将被赛事方记录并公布。
每日步数最多的参赛者是当日的日冠军#xff08;可以有并…题目
约翰参加了一场步行比赛。
比赛为期 N 天参赛者共 M 人包括约翰。
参赛者编号为 1∼M其中约翰的编号为 P。
每个参赛者的每日步数都将被赛事方记录并公布。
每日步数最多的参赛者是当日的日冠军可以有并列冠军。
如果一名参赛者可以连续 N 天成为日冠军那么他将成为创造历史的传奇冠军这正是约翰的最终目标。
在比赛结束后约翰拿到了所有选手的全部成绩并试图分析自己在实现目标方面还差了多少步。
对于第 i 天如果约翰是当日的冠军那么他就会对当日的发挥表示满意即当日不需要额外多走步数如果约翰不是当日的冠军那么他就会计算当日若要夺冠还需要额外走的最小步数。
请你计算并输出为了实现目标约翰在这 N 天中需要额外走的最小总步数。
输入格式
第一行包含整数 T表示共有 T 组测试数据。
每组数据第一行包含三个整数 M,N,P。
接下来 M 行每行包含 N 个整数其中第 i 行第 j 个数 Si,j 表示第 i 个参赛者第 j 天的行走步数。
输出格式
每组数据输出一个结果每个结果占一行。
结果表示为 Case #x: y其中 x 为组别编号从 1 开始y 为实现目标需要额外走的最小总步数。
数据范围
1≤T≤100, 2≤M≤1000, 1≤N≤31, 1≤P≤M, 1≤Si,j≤60000
输入样例1
1
2 3 1
1000 2000 3000
1500 1500 3000输出样例1
Case #1: 500样例1解释
在此样例中比赛为期 3 天共 2 人参赛约翰是 1 号选手。
第 1 天约翰若想夺冠至少还需额外走 500 步。
后两天约翰均为日冠军无需额外多走步数。
所以他一共需要额外走 500 步。
输入样例2
2
3 2 3
1000 2000
1500 4000
500 4000
3 3 2
1000 2000 1000
1500 2000 1000
500 4000 1500输出样例2
Case #1: 1000
Case #2: 2500样例2解释
在 Case 1 中比赛为期 2 天共 3 人参赛约翰是 3 号选手。
第 1 天约翰若想夺冠至少还需额外走 1000 步。
第 2 天约翰为日冠军无需额外多走步数。
所以他一共需要额外走 1000 步。
在 Case 2 中比赛为期 3 天共 3 人参赛约翰是 2 号选手。
第 1 天约翰为日冠军无需额外多走步数。
第 2 天约翰若想夺冠至少还需额外走 2000 步。
第 3 天约翰若想夺冠至少还需额外走 500 步。
所以他一共需要额外走 2500 步。
题解
#include iostream
using namespace std;const int N 32;
int ans[N];
int ap[N];int main() {int t, tt;const int M 1010;cin t;tt t;while (t-- ! 0) {int m, n, p;cin m n p;for (int i 1; i n; i) {ans[i] 0;ap[i] 0;}for (int i 1; i m; i) {if (i ! p) {for (int j 1; j n; j) {int temp;cin temp;ans[j] max(ans[j], temp);}} else {for (int j 1; j n; j) {cin ap[j];ans[j] max(ans[j], ap[j]);}}}int res 0;for (int i 1; i n; i) {res ans[i] - ap[i];}int ttt tt - t;cout Case # ttt : res endl;}return 0;
}
思路
很简单的一个模拟根据题目要求一步一步来就行了java记得用io读取数据不然会超时。