题目大意

把一个高速公路看作由连续排列的一个个格子组成,有n个格子上有坑。给出m,要求出m段区间,使得这m区间覆盖到所有坑(交通管制),且占据的格子数量最少。输出占据的格子数。

题解

换个角度看问题。因为正常通行的路段上没有坑,故想到原题相当于求m-1个没有坑的区间,求这些区间占据格子数的最大值。把两两坑间隔求出来,从大到小排序,选出前面m-1个间隔值,再有总区间长度减去它即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <iostream>
using namespace std; const int MAX_POS_CNT = 15010;
#define ll long long
ll Poss[MAX_POS_CNT], Delta[MAX_POS_CNT]; bool cmp(ll a, ll b)
{
return a > b;
} int main()
{
ll n, m;
ll ans = 0;
scanf("%lld%lld", &n, &m);
for (int i = 1; i <= n; i++)
scanf("%lld", Poss + i);
Poss[0] = Poss[1];
for (int i = 1; i <= n; i++)
{
Delta[i] = Poss[i] - Poss[i - 1] - 1;
ans += Poss[i] - Poss[i - 1];
}
ans++;
sort(Delta + 1, Delta + n + 1, cmp);
for (int i = 1; i <= m - 1; i++)
ans = ans - Delta[i];
cout << ans << endl;
}

最新文章

  1. Postgresql 导出表结构信息
  2. 宁波uber优歩司机注册教程 UBER宁波司机注册指南!
  3. 0016 Java学习笔记-异常-如果try-catch-finally中都存在return语句会怎样?
  4. linux驱动初探之字符驱动
  5. 《Java中的单例模式--两种》
  6. Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
  7. paper 3:matlab中save,load使用方法小结
  8. poj2194Stacking Cylinders
  9. Appium —— desired_capabilities详解
  10. 【原创】ZOJ_1649 Rescue 解题报告
  11. PPT素才搜索简谈
  12. 异步解决方案promise及源码实现
  13. 可持久化线段树——区间更新hdu4348
  14. [20190306]共享服务模式与SDU.txt
  15. day 7-11 初识MySQL数据库及安装密码设置破解
  16. 新浪天气api
  17. django ---forms组件
  18. Object-c中的单例
  19. Loararunner录制脚本
  20. 第5课 Qt Creator工程介绍

热门文章

  1. JavaScript中变量的类型
  2. jQueryAjax模拟按键消抖(可设置抖动延迟时间)
  3. dubbo之回声测试
  4. C# MVC 返回html内容
  5. jquery相关常用的工具函数
  6. 【转载】java 监听文件或者文件夹变化的几种方式
  7. Day3 分支结构
  8. laravel中ubuntu下执行php artisan migrate总是报错
  9. 亚马逊免费服务器搭建Discuz!论坛过程(一)
  10. 06.系统编程-4.多线程和GIL