链接: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; }