【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 104853
  • 排名 - 233

最新评论

阅读排行榜

评论排行榜

在一个月黑风高,下着暴风雨的夜晚,农民约翰的牛棚的屋顶、门被吹飞了。 好在许多牛正在度假,所以牛棚没有住满。剩下的牛一个紧挨着另一个被排成一行来过夜。 有些牛棚里有牛,有些没有。 所有的牛棚有相同的宽度。自门遗失以后,农民约翰必须尽快在牛棚之前竖立起新的木板。 他的新木材供应者将会供应他任何他想要的长度,但是供应者只能提供有限数目的木板。农民约翰想将他购买的木板总长度减到最少。

给出 M(1<= M<=50),可能买到的木板最大的数目;S(1<= S<=200),牛棚的总数;C(1 <= C <=S) 牛棚里牛的数目,和牛所在的牛棚的编号stall_number(1 <= stall_number <= S),计算拦住所有有牛的牛棚所需木板的最小总长度。 输出所需木板的最小总长度作为答案。


INPUT FORMAT:

(file barn1.in)

第 1 行: M , S 和 C(用空格分开)

第 2 到 C+1行: 每行包含一个整数,表示牛所占的牛棚的编号。

OUTPUT FORMAT:

(file barn1.out)

单独的一行包含一个整数表示所需木板的最小总长度。


input:
4 50 18
3
4
6
8
14
15
16
17
21
25
26
27
30
31
40
41
42
43

output:
25

【参考程序】:

/*
ID:XIONGNA1
PROG: barn1
LANG: C++
*/
#include
<iostream>
using namespace std;
int m,s,c;
int a[201],b[201];
int cmp(const void *s,const void *t)
{
    
int i=*(int *)s,j=*(int *)t;
    
return i-j;
}
int main()
{
    freopen(
"barn1.in","r",stdin);
    freopen(
"barn1.out","w",stdout);
    scanf(
"%d%d%d",&m,&s,&c);
    
for (int i=1;i<=c;i++) scanf("%d",&a[i]);
    qsort(a
+1,c,sizeof(int),cmp);
    
int s1,s2;
    s1
=a[c]-a[1]+1;
    
for (int i=1;i<=c-1;i++) b[i]=a[i+1]-a[i]-1;
    qsort(b
+1,c-1,sizeof(int),cmp);
    s2
=0;
    
for (int i=c-1;i>=c-m+1;i--) s2+=b[i];
    printf(
"%d\n",s1-s2);
    
return 0;
}

posted on 2009-07-15 09:15 开拓者 阅读(342) 评论(0)  编辑 收藏 引用 所属分类: USACO 题解

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理