来源:JZOJ
题目描述
现在让我们假设,一场比赛中, 的篮球运动员将会每秒钟就投一个球。那时候将不再有任何防守、战术和篮球。
让我们想象一下在未来的一场 队和 队之间的比赛。
我们分别都知道 队和 队得到的分数和得到这些分数的确切秒数,并且每一秒钟,得分不会超过一分。
詹姆斯国王正在观察任务输入,并且希望回答下面这两个问题:
-
如果我们知道整场比赛持续 分钟,那么上半场比赛得分多少?
-
比赛期间发生了多少次“转机”,即一支落后球队(比分落后)有多少次反超领先球队(比分高的多)?
解题思路
- emm,好像没有什么好讲的,总之就是枚举每一秒,模拟吧,有一点小细节处理一下就 了
Code
#include <bits/stdc++.h>
using namespace std;
int a[5010],b[5010];
int main()
{
freopen("preokret.in","r",stdin);
freopen("preokret.out","w",stdout);
int n;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
a[x]=1; //第x秒a队进球
}
int m;
scanf("%d",&m);
for (int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
b[x]=1; //第y秒b队进球
}
int ans=0;
for (int i=1;i<=2*12*60;i++)
{
if (a[i]) ans++;
if (b[i]) ans++;
}
printf("%d\n",ans); //前半场总得分
int A=0,B=0,p=0,sum=0;
for (int i=1;i<=4*12*60;i++)
{
if (a[i]) A++;
if (b[i]) B++;
if (A>B)
{
if (p==2) sum++; //A反超B
p=1;
}
if (A<B)
{
if (p==1) sum++; //B反超A
p=2;
}
}
printf("%d",sum);
return 0;
}