MIDO - KOSARK 题解

· · 题解

博客中食用更佳~

题目传送门

Part 1.题目大意

输入三个数,wnm,表示队伍 w 在第 n 分钟第 m 秒得到了一分。

然后分别输出两支队伍比分大于另一支队伍的时间。

Part 2.蒟蒻的思路

读入数据后,将时间转换为秒,再使 sk[ 时间 ][ 得分队伍 ]+1,这样就可以用 sk[x][y] 表示在第 x 秒第 y 只队伍得到的分数。

然后再一秒一秒的遍历,有队伍得分就给这支队伍的得分加上 sk[ 时间 ][ 得分队伍 ],加上得分后判断哪只队伍得分更大,给得分大的那只的领先时间 +1

最后将两支队伍的领先时间转换成分秒表示,并输出。

所以程序整体为 3 部分:读入,遍历,输出。

Part3.蒟蒻的代码

#include <bits/stdc++.h> //可爱的万能头
using namespace std;
short sk[3001]; //记录得分时间
int ans[3]; //记录领先时间
int main(){
    int n,w,m,s;
    int p1=0,p2=0; //分数1,2
    char c;//吞冒号
    cin>>n;
    while(n--){
        cin>>w>>m>>c>>s; //读入
        sk[s+m*60][w]++; //存得分
    }for(int i=0;i<2880;i++){ //时间一秒一秒的遍历
        if(sk[i][1]!=0) p1+=sk[i][1]; //改变队伍1比分
        if(sk[i][2]!=0) p2+=sk[i][2]; //改变队伍2的比分
        if(p1>p2) ans[1]++;
        if(p1<p2) ans[2]++; //判断领先
    }printf("%02d:%02d\n%02d:%02d",ans[1]/60,ans[1]%60,ans[2]/60,ans[2]%60); //前导零的简便输出法
    return 0;
}