题解:P14477 图寻中国

· · 题解

题目传送门

我是蒟蒻,写的可能有点复杂,大佬们请见谅

大概思路

本蒟蒻直接模拟,具体见代码

AC Code:

#include<bits/stdc++.h>
#pragma optimize (1,2,3,"inline")
typedef long long ll;
using namespace std;
ll a,b,c,s=0,i; //s:赢的场数
int main()
{
    cin>>a>>b>>c;
    for(i=1;;i++)
    {
        if(a-b<=0)//如果剩余场数小于最多连赢场数,剩下的加到s中,跳出
        {
            s+=a;
            break;
        }
        a-=b;//一般情况s直接加上最多连赢场数的值,总场数减去最多连赢场数的值
        s+=b;
        if(a-1<=0)//如果剩下的值不够再输一场,跳出
        {
            break;
        }
        if(i==1)//第一次减去最多连输场数
        {
            a-=c;
        }
        else//一般情况减去1个就行了
        {
            a--;
        }
    }
    cout<<s;
    return 0;
}