USACO Section 1.3.2 Barn Repair

来源:互联网 发布:浙江大学软件学院邮编 编辑:程序博客网 时间:2024/05/16 01:57

要使长度最小,那么就要用尽量多的木板,但不是要将给的木板全部用完! 这样就能保证最小长度,

在木板充足的情况下,最小长度就是有牛的牛棚的个数,在不充足的情况下就可以换种思路来想问题了

反正是不够用了,那么就会出现空当,那么这个空当的空越大,用的木板的就越少,我们首先把有牛的棚子用一块木板堵上

然后依次往下减去最大的空当就可了,至于减去多少个,根据给定的最多的木板个数判断一下就行了


/*ID: zhuihun1PROG: barn1LANG: C++*/#include <iostream>#include <fstream>#include <string.h>#include <stdio.h>#include<algorithm>#define MAXSIZE 5005using namespace std;int m,s,n;int code[MAXSIZE];int dis[MAXSIZE];int main(){    ofstream fout ("barn1.out");    ifstream fin ("barn1.in");    fin>>m>>s>>n;    int i,sum;    for(i=0;i<n;i++)        fin>>code[i];    sort(code,code+n);    sum=code[n-1]-code[0]+1;    int x=0;    for(i=0;i<n-1;i++)    {        if(code[i+1]-code[i]>1)          dis[x++]=code[i+1]-code[i];    }    sort(dis,dis+n-1);    int j=0;    for(i=n-2;j<m-1&&j<x;i--,j++)        sum=sum-dis[i]+1;    fout<<sum<<endl;    return 0;}


原创粉丝点击