P2242 公路维修问题
P2242 公路维修问题 - 洛谷
思路:
可以看成总共管制的道路是最大-最小。然后再分段。为了尽量小的路段,我们就需要找到两个坑直接较大的值,让这个路段不管制。注意我们计算路段的时候要-1,因为41 42,之间管制距离是0.
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(void)
{int n,m;cin >> n >> m;vector <int> a(n+1);vector <int> b(n+1);for(int i = 1 ; i <= n ; i++)cin >> a[i];int sum = a[n] - a[1] + 1;
// cout << sum <<endl;for(int i = 2 ; i <= n ; i++){b[i-1] = a[i] - a[i-1] - 1;}sort(b.begin() + 1,b.end(),greater<int>());
/* for(int i = 1 ; i <= n - 1; i++){cout << b[i] <<" ";}*/for(int i = 1 ; i <= m-1 ; i++)sum -= b[i];cout << sum <<endl;return 0;}