分析:也是标准的贪心题,木板长度的最差情况是a[n]-a[1],然后我们算一下木板在哪个地方断掉可以减少最大的距离就OK
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 6 using namespace std; 7 8 int a[205],n,m,s,c[205]; 9 10 inline bool cmp(int x,int y) 11 { 12 return x>y; 13 } 14 15 int main() 16 { 17 scanf("%d%d%d",&m,&n,&s); 18 for(int i=1;i<=s;i++) 19 scanf("%d",&a[i]); 20 if(m>=s) 21 { 22 printf("%d",s); 23 return 0; 24 } 25 sort(a+1,a+s+1); 26 int ans=a[s]-a[1]+1; 27 for(int i=2;i<=n;i++) 28 c[i]=a[i]-a[i-1]-1; 29 sort(c+1,c+n+1,cmp); 30 for(int i=1;i<=m-1;i++) 31 ans-=c[i]; 32 printf("%d",ans); 33 return 0; 34 }