题目链接
https://vjudge.net/contest/406673#problem/A
解题思路
找几个情况试试(不考虑特殊情况,何为特殊情况……自己判断吧),发现与现在这组比分的最小值,上组比分的最大值之差有关,但是存在特殊情况,比如样例2,比如0,0;2,2,比如1,0;3,3……。
AC代码
#include<bits/stdc++.h> using namespace std; const int N=1e4+100; int n,a[N],b[N],ans=1; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]>>b[i]; if(a[i]==a[i-1] && b[i]==b[i-1]) continue;//针对多个 0 0 ans+=max(0,min(b[i],a[i])-max(b[i-1],a[i-1])+1); if(a[i-1]==b[i-1]) ans--;//针对相等的情况,额外-1;注意,判断的是前一组相等,则--。 } cout<<ans<<endl; return 0; }