蓝桥集训之修理牛棚
-
核心思想:贪心
- 先把所有牛棚合成一块木板
- 然后将所有间隙大小求出 排序找到最大的n-1个
- 总长度 - n-1个间隙 得到剩下n个木板总长度
cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 210;
int a[N],space[N];
int n,m,c;
int main()
{
cin>>n>>m>>c;
for(int i=0;i<c;i++) cin>>a[i];
sort(a,a+c);
for(int i=1;i<c;i++) space[i] = a[i]-a[i-1]-1; //求间隙长度
int res = a[c-1] - a[0] + 1; //总长度
//从大到小排间隙
sort(space+1,space+c,greater<int>());
for(int i=1;i<n;i++) res -= space[i];
cout<<res<<endl;
return 0;
}