Codeforces Round #541 (Div. 2) - B

题目链接:http://codeforces.com/problemset/problem/1131/B

思路:

每个状态和前一个状态相比,sta表示前一个状态的情况:(a,b是比分)

sta==0 : a=b

sta==1 : a>b

sta==-1 : a<b

根据不同的状况来划分qwq情况。

注意,当前一个状态比分不相等时,比如3:2,且本状态的a,b都有增加,比如5:6,那么前一个状态最多是从3:3开始平局,后一个状态最多能加到5:4,即min(nowa,nowb)-max(prea,preb)+1

若本状态是5:5则加了5-3+1=3,(3:3,4:4,5:5)

所以在往下一个状态sta=0(5:5)时,就不能再加上5:5了,加上min(nowa,nowb)-prea

比如变成6:7,就加上1(6:6)

扫描二维码关注公众号,回复: 5298512 查看本文章

比如变成6:6,还是加上1(6:6)

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cmath>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef pair<int,int>P;
const int INF=0x3f3f3f3f;
const int N=10005,mod=32767;
int a[N],b[N];
int sta;
void judge(int x,int y){
    if(x==y)sta=0;
    else if(x>y)sta=1;
    else sta=-1;
}
int main(){
    int n,ans;
    a[0]=b[0]=0;
    while(scanf("%d",&n)!=EOF){
        sta=0;ans=0;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&a[i],&b[i]);
            if(sta==0){
                if(a[i]>a[i-1]&&b[i]>b[i-1])ans+=min(a[i]-a[i-1],b[i]-b[i-1]);
            }
            if(sta==1){
                if(a[i]==a[i-1]&&b[i]==b[i-1])ans+=0;
                else if(a[i]>a[i-1]&&b[i]==b[i-1])ans+=0;
                else if(a[i]>a[i-1]&&b[i]>b[i-1]){
                    int t=min(a[i],b[i]);
                    if(t-a[i-1]>=0)ans+=t-a[i-1]+1;
                }
                else if(a[i]==a[i-1]&&b[i]>b[i-1]&&b[i]>=a[i])ans++;
            }
            if(sta==-1){
                if(a[i]==a[i-1]&&b[i]==b[i-1])ans+=0;
                else if(a[i]>a[i-1]&&b[i]==b[i-1]&&a[i]>=b[i])ans++;
                else if(a[i]>a[i-1]&&b[i]>b[i-1]){
                    int t=min(a[i],b[i]);
                    if(t-b[i-1]>=0)ans+=t-b[i-1]+1;
                }
                else if(a[i]==a[i-1]&&b[i]>b[i-1])ans+=0;
            }
            judge(a[i],b[i]);
        }
        ans++;
        printf("%d\n",ans);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_37579232/article/details/87900442