同样是一道贪心题,我的思路是用一个数组存下所有的空挡,对空挡进行排序,然后再在总长度中减去前m-1大的空档长度。 关键还是理解题意。。貌似洛谷oj不支持INT_MIN之类的。。还有要对初始数据排一次序,害我wa了一次。。。。
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
bool cmp(int a,int b)
{
if(a>b)
return 1;
return 0;
}
int main()
{
int m,s,c;
int i,ans;
int a[210],b[210];
int Max=0,Min=0x7fffffff;
cin>>m>>s>>c;
for(i=0;i<c;i++)
{
cin>>a[i];
Max=max(Max,a[i]);
Min=min(Min,a[i]);
}
sort(a,a+c);
if(m>=c)
ans=c;
else{
ans=Max-Min;
for(i=0;i<c-1;i++)
{
b[i]=a[i+1]-a[i];
}
sort(b,b+c-1,cmp);
for(i=0;i<m-1;i++)
{
ans-=b[i];
}
ans+=m;
}
//for(i=0;i<c-1;i++)
//cout<<b[i]<<endl;
cout<<ans;
return 0;
}