题意:给定 n 个地方,然后再给 m 个任务,每个任务必须在规定的地方完成,并且必须按顺序完成,问你最少时间。
析:没什么可说的,就是模拟,记录当前的位置,然后去找和下一个位置相差多长时间,然后更新当前位置即可。
代码如下:
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; typedef long long LL; int main(){ int n, m, x; while(cin >> n >> m){ LL ans = 0; int pos = 1; for(int i = 0; i < m; ++i){ cin >> x; if(x == pos) continue; if(x > pos){ ans += x - pos; } else ans += x + n - pos; pos = x; } cout << ans << endl; } return 0; }