一.思路

我们可以先把时间换成以为单位的,然后在枚举每一秒时谁领先。

二.重要点

  • 我们可以用 string 读入时间,再用一个函数以为单位提取出来(在程序中的函数名: tiqu )。
  • 如果双方分数是一样的,那么谁都不领先(在程序中的函数名: out_put )。
  • 输出的时候要填充 $0$ ,就建一个函数。

三.实现

#include<bits/stdc++.h>
using namespace std;
int n,p,fen[3],shijian[110][3],ta,tb;string s;
void tiqu(string x,int th,int player){// x ->读入的时间 th ->第几个(i) player ->哪一方的球了
    shijian[th][player]=int(x[0]-48)*600+int(x[1]-48)*60+int(x[3]-48)*10+int(x[4]-48);
}//转格式( x[0] 是分钟的十位,x[1] 是分钟的个位,x[3] 是秒的十位,x[4]是秒的个位)
void out_put(int t){
    int x=t/60,y=t%60;
    if(x/10==0) cout<<0;//若 x (分钟)是个位数,要输出 '0'
    cout<<x<<":";
    if(y/10==0) cout<<0;//若 y (秒钟)是个位数,也要输出 '0'
    cout<<y<<endl;
}//输出 
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>p>>s;
        int op=1;
        if(p==1) op=2;
        tiqu(s,i,p);//转换为以秒为单位的时间
        shijian[i][op]=4800;//为了防止在 0 秒进球,然后有BUG
    }
    for(int i=0;i<60*48;i++){
        fen[0]=fen[1]+fen[2];
        if(shijian[fen[0]][1]==i) fen[1]++;
        if(shijian[fen[0]][2]==i) fen[2]++;
       //判断在这一秒是否得分
        if(fen[1]>fen[2]) ta++;
        if(fen[2]>fen[1]) tb++;
      //判断分数上的领先
    }//枚举每 1 秒
    out_put(ta);//输出 a 方的领先时间
    out_put(tb);//输出 b 方的领先时间
    return 0;
}
最后修改:2023 年 05 月 19 日
如果觉得我的文章对你有用,请随意赞赏