题解:P12647 [KOI 2024 Round 2] 寻宝游戏

· · 题解

解题思路

考虑 L\lt S\lt R 因此起点必然在两个点中间。观察规律可以转化为两个人分别从起点往左和往右轮流各走一步,判断两个小人的其中一个走到目标点的最少步数和。由于向右的小人先走,故如果起点到右目标点的距离等于左目标点距离时,右边先到。直接计算即可。效率为 O(T)

代码实现

#include<bits/stdc++.h>
using namespace std;
int main() {
    int T, l, r, s;
    cin >> T;
    while (T--) {
        cin >> l >> r >> s;
        int dl = abs(s - l), dr = abs(r - s);
        if (dr <= dl) {
            cout << (dr * 2) << endl;
        } else {
            cout << (dl * 2) +1 << endl;
        }
    }
    return 0;
}