ABC160c
很经典的断环成链的思路,最大的相邻间隔决定了我们需要绕行的最长距离。如果我们选择这个最大间隔的端点作为起点,其他房子到这个起点的路径将绕过这个最大间隔,从而最小化总路程。这点比较重要。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 2e5 + 10;
int n, k;
int a[N * 2];
int main(){
cin >> k >> n;
for(int i = 0; i < n; i ++){
cin >> a[i];
}
a[n] = a[0] + k;
int l = 0;
for(int i = 0; i < n; i++){
l = max(l, a[i + 1] - a[i]);
}
cout << k - l << endl;
return 0;
}

浙公网安备 33010602011771号