• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
scorpiorax
博客园    首页    新随笔    联系   管理    订阅  订阅
洛谷1209修理牛棚

题目描述

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

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

输入输出格式

输入格式:

 

第 1 行: 木板最大的数目M ,牛棚的总数S 和 牛的总数C(用空格分开)

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1: 复制
4 50 18
3 
4 
6 
8 
14
15 
16 
17 
21
25 
26 
27 
30 
31 
40 
41 
42 
43
输出样例#1: 复制
25

说明

题目翻译来自NOCOW。

USACO Training Section 1.3

 

********介是一个小贪心

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cmath>
 5 using namespace std;
 6 int i,m,s,c,a[205],ans,b[205];
 7 int cmp(int a,int b)
 8 {
 9     return a < b;
10 }
11 int dmp(int a,int b)
12 {
13     return a > b;
14 }
15 int main()
16 {
17     scanf("%d %d %d",&m,&s,&c);
18     for(i = 1;i <= c;i++)
19     {
20         scanf("%d",&a[i]);
21     }
22     sort(a + 1,a + c + 1,cmp);
23     for(i = 1;i < c;i++)
24     {
25         b[i] = a[i + 1] - a[i] - 1;  //记录空隙的长度 
26     }
27     sort(b + 1,b + c,dmp);
28     ans = a[c] - a[1] + 1;
29     for(i = 1;i < m;i++)
30     {
31         ans -= b[i];
32     }
33     printf("%d",ans);
34     return 0;
35 }

 

posted on 2018-10-25 16:46  scorpiorax  阅读(285)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3