这道题有点小坑,不是算法错了,而是文件名,是barn1不是barnl,恕我眼拙,找了十五分钟...
肯定是木板的个数用的越多越好,这样可以减少空隙.
简单的贪心,将每两个马厩之间的空隙从大到小排序,取前m个. 注意c<=m的情况.
/*ID: wang9621PROG: barn1LANG: C++*/#include#include #include using namespace std;int in[300];int cnt[300];bool cmp(int a,int b){ return a>b;}int main(){ freopen("barn1.in","r",stdin); freopen("barn1.out","w",stdout); int m,s,c; scanf("%d %d %d",&m,&s,&c); for(int i = 1; i<=c; i++) { scanf("%d",&cnt[i]); } int ans = 0; sort(cnt+1,cnt+c+1); for(int i = 2; i<=c; i++) { in[ans++] = cnt[i]-cnt[i-1]-1; } int sum = cnt[c]-cnt[1]+1; sort(in,in+ans,cmp); if(c<=m) printf("%d\n",c); else { for(int i = 0; i