题面:

题目描述

在一个夜黑风高,下着暴风雨的夜晚,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行: 每行包含一个整数,表示牛所占的牛棚的编号。

输出格式

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


可以先将这道题反过来想

可以理解为有一块木板将整个盖住,每两个有牛的棚子中间有空隙,可以断开m-1次,如图例

但还需要特判m>c的情况,因为需要的木板比消耗的木板多,会导致第6,7个点WA或RE

上代码

#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
int m,s,c,a[205],b[205],ans=0;
bool cmp(int x,int y){return x>y;}//从大到小排
int read()
{   int x=0; char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); }return x;
}//快读
int main()
{m=read();s=read();c=read();if(m>c){printf("%d",c);return 0;}//特判需要的木板比消耗的木板多的情况 for(int i=1;i<=c;i++)a[i]=read();sort(a+1,a+c+1);for(int i=2;i<=c;i++)b[i-1]=a[i]-a[i-1];//求出有牛的牛棚的中间的空隙 ans=a[c]-a[1]+1;//初始将整个盖住 sort(b+1,b+c,cmp);//空隙从大到小排 for(int i=1;i<=m-1;i++)ans=ans-b[i]+1;//减去空隙 printf("%d",ans);return 0;
}

  

转载于:https://www.cnblogs.com/Peter-Rabbit/p/11308080.html

题解 洛谷P1209 【[USACO1.3]修理牛棚 Barn Repair】相关推荐

  1. 洛谷P1209 [USACO1.3]修理牛棚 Barn Repair----解题报告

    题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛 ...

  2. P1209 [USACO1.3]修理牛棚 Barn Repair 的详解

    P1209 [USACO1.3]修理牛棚 Barn Repair [题目网站] [USACO1.3]修理牛棚 Barn Repair - 洛谷 [题目考点] 间隔的计算 [题目思路] 先输入数据 再算 ...

  3. P1209 [USACO1.3]修理牛棚 Barn Repair(贪心+逆向思维)难度⭐⭐⭐

    我们可以先假设只有一块木板从编号最小的牛棚一直铺到编号最大的牛棚,然后断开m-1处.自然要按相邻牛棚的编号差从大到小断开才能使我们断开的地方可以有效节省木板长度(因为中间省去的要更多) 另外,要将输入 ...

  4. P1209 [USACO1.3]修理牛棚 Barn Repair

    在一个月黑风高的暴风雨夜,Farmer John 的牛棚的屋顶.门被吹飞了 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜.有些牛棚里有牛,有些没有. 所有的 ...

  5. P1209 [USACO1.3]修理牛棚 Barn Repair(贪心)

    题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛 ...

  6. [USACO1.3]修理牛棚 Barn Repair

    https://www.luogu.org/problemnew/show/P1209 题解: 典型的贪心题目 我们可以先假设只有一块木板从编号最小的牛棚一直铺到编号最大的牛棚,然后断开m-1处.自然 ...

  7. USACO1.3]修理牛棚 Barn Repair

    题目大意: 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有 ...

  8. K10837 修理牛棚 Barn Repair [USACO1.4]

    K10837 修理牛棚 Barn Repair [USACO1.4] 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满 ...

  9. USACO修理牛棚 Barn Repair

    USACO修理牛棚 Barn Repair 题目描述 在一个月黑风高的暴风雨夜,Farmer John 的牛棚的屋顶.门被吹飞了 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行 ...

最新文章

  1. @Conditional派生注解
  2. 用Java调用WebService
  3. Java医疗管理系统技术描述
  4. 利用MAVEN打包时,如何包含更多的资源文件
  5. C#/.Net操作MongoDBHelper类
  6. 商用服务器系统比较好,商用服务器操作系统都用哪种
  7. Jetbrains 系 IDE 编辑器的代码提示功能
  8. 测试你的杀毒软件实时监控能力!
  9. SpringCloud 从菜鸟到大牛之二 服务注册与发现 Sping Cloud Eureka
  10. MyBatis获取参数值的两种方式以及传参情况
  11. Linux中如何让进程在后台运行
  12. shopify的前端开发教程
  13. Linux 操作系统基础知识总结
  14. 000webhost – 1500M支持PHP可绑米免费虚拟主机
  15. 百度大脑 EasyEdge 推出端云协同服务,大幅提升本地部署模型迭代效率
  16. 安卓四大组件(小白篇)
  17. 苹果xr如何截屏_苹果手机如何单手操作截屏
  18. 【问题处理】Word修改页边距后,目录没有右对齐
  19. 网易云音乐params和encSecKey生成原理
  20. Shell中获取当前脚本的绝对路径: $( cd “$( dirname “${BASH_SOURCE[0]}“ )“ pwd)

热门文章

  1. CJJ爱编程之二----A+B
  2. tomcat链接数据库
  3. 【软件安装故障排除】安装完PyCharm,启动时弹出“Failed to load JVM DLL\bin\server\jvm.dll“解决方案
  4. python异步读写文件_一文彻底搞懂python文件读写
  5. 有感无刷电机正反转电流差别大
  6. VS番茄插件的常用快捷键(提高工作效率)
  7. 【软件网每日新闻播报│第9-25期】
  8. cf891E Lust
  9. 【美】罗伯特•帕利亚里尼——《另外8小时》
  10. [附源码]JAVA毕业设计美食推荐管理系统(系统+LW)