题解
2025-12-02 20:15:06
发布于:浙江
8阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
int b[1000005];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);//优化
cin>>n;
int s=0;//累计平局次数
int k=-1;//记录上一次处理的平局比分(初始为-1)
a[0]=b[0]=0;//表示比赛开始时的比分是0:0
for (int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
int l=max({a[i-1],b[i-1],k+1});//确定可能产生新平局的最小值,
//必须大于等于前一个比分的较大值(因为比分只能增加),
//必须大于k(避免重复计算)
int r=min(a[i],b[i]);//确定可能产生新平局的最大值
if (r>=l)//如果r >= l,说明在这个区间内有平局可能
{
k=r;//更新k = r(记录最后处理的平局)
s+=r-l+1;//平局次数增加r-l+1(区间长度)
}
}
cout<<s;//累计的平局次数s
return 0;
}
这里空空如也







有帮助,赞一个