B - Draw! 找规律思维

传送门
思路:多测几组样例找规律即可
1.维护五个变量。a-选手 b-选手 la-上一次a选手得分 lb-上一次b选手得分 maxn-上一次的最大得分。
可以推出 出现平局的情况必然是这一次得分较小的一方大于等于上一次得分较多的一方。注意特判一些情况!!!本次出现平局和上一次出现平局。

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    long long la = 0,lb = 0;
    long long maxn = 0, ans = 1;
    for(int i = 1;i <= n;i++)
    {
        long long a, b;
        cin >> a >> b;
        //if(i == 1 && a == 0 && b == 0)
        if(a == b)
        {
            if(la != lb)
            ans += a - max(la, lb) + 1;
            else ans += a -  la;
            la = a, lb = b;
            maxn = max(la, lb);
            continue;
        }
        if(maxn <= min(a, b))
        {
            if(la != lb)
            ans += min(a, b) - maxn + 1;
            else
            {
                ans += min(a, b) - maxn;
            }
        }
        la = a;
        lb = b;
        maxn = max(la, lb);
    }
    cout << ans << endl;
    return 0;
}

发布了241 篇原创文章 · 获赞 8 · 访问量 4859

猜你喜欢

转载自blog.csdn.net/weixin_43960370/article/details/103406266