一.思路
我们可以先把时间换成以秒为单位的,然后在枚举每一秒时谁领先。
二.重要点
-
我们可以用 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;
}
标签:48,int,题解,60,th,luogu,put,P7632,out
From: https://www.cnblogs.com/lzx19/p/sol-lg-p7632.html