B. Nastya Is Playing Computer Games

链接:https://codeforces.com/contest/1136/problem/B

题意:

有n个井盖,每个井盖上有一个小石头。

给出n和k,k表示刚开始在第k个井盖上方。

有三种操作,左右移动,扔石头到任意一个井盖,下到井盖里拿金币。

只有井盖上没有石头才能下井盖。

求捡完全部金币的最小步数。

思路:

因为刚开始就在一个井盖上方,

所有先用选相邻的井盖堆石头,把这两个井盖金币捡到的步数和为6,其他的井盖步数和为(n-2)*3。

即共n*3同时,考虑先走那个方向,往左走的多余步数为k-1,右走的多余步数为n-k。

取较小的即可

代码:

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

typedef long long LL;

int main()
{
    int n, k;
    cin >> n >> k;
    cout << n * 3 + min(k - 1, n - k) << endl;

    return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/YDDDD/p/10515993.html