P8220 题解

· · 题解

显然我们需要尽可能避开 \tt B 类点,那么就产生了这几种走法(方框里的代表 \tt B 类点):

其中,第一、二张图是指 c\ge n 时的走法,而第三张图指的是 c<n 的走法。

显然没有其他更优的解法,若 c\ge n,则第一、二种走法取 \min 即可,否则用第三种方法走即可。

代码:

# include <bits/stdc++.h>
using namespace std;

int main()
{
    long long n, a, b, c;
    cin >> n >> a >> b >> c;
    cout << (c >= n ? min(2*n-1 + y-x+1, 2*c+1) : 2*n-1);
    return 0;
}