上色的纱雾

Time Limit: 1000MS  Memory Limit: 65536KB
Submit  Statistic

Problem Description

纱雾画画功力首屈一指,现在她准备上色了,这时候她在想,怎样上色的时间最短呢?

在这里我们把问题简化,平面图抽象成坐标轴,需要上色的地方抽象成 n 个点,纱雾有 m 支画笔。

开始的时候纱雾可以选择让画笔落在坐标轴任意一点上,之后每次移动画笔一个单位的距离都会花费 1 秒(画笔可以左右移动,纱雾强大的能力可以同时移动 m 枝画笔,涂色的时间忽略不计)。现在纱雾想要知道这 n 个点全部上完色最少要多少时间呢?

相信你一定能让可爱的纱雾露出这样的表情的:

Input

多组输入。

首先输入两个以空格分隔的整数 n, m(1 <= n, m <= 10^5)。分别表示需要上色的点以及纱雾拥有的画笔的数量。

接下来一行是 n 个以空格分隔的整数(绝对值保证不超过 10^9)。

Output

对于每组数据,输出一个整数,表示纱雾需要的最少时间(秒)。

Example Input

3 2
1 4 8
3 1
1 2 9
4 2
1 2 3 6

Example Output

3
8
2

Hint

两支画笔,第一支画笔初始地点选择 1,第二支画笔初始地点选择地点 8。

那么 3s 后第一支画笔可以到达地点 4,这样 3 个点就可以全部涂上了。

Author

UMR

思路:

1、显然,时间越长,m只笔的利用度就越大。也就越能完成任务。

所以这里时间包含一个单调性,我们不妨二分时间。

2、对于我们二分出来的时间mid.

我们贪心的去check。

其实两个方向去涂抹颜色根本没有什么意义,从右往左涂抹,不如界定左边的这个点为起点向右涂抹。

所以我们不妨规定向右涂抹为方向,使得所有笔都向一个方向涂抹。

那么接下来贪心涂抹即可。我们肯定不希望有多只笔覆盖同一个区域,所以这里O(n)扫一下贪心就行了。

注意数据范围,来界定上下界。

Ac代码:

#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[100050];
int n,m;
int Slove(int mid)
{int use=1;int pre=a[1];for(int i=2;i<=n;i++){if(a[i]-pre<=mid)continue;else{use++;pre=a[i];}}if(use<=m)return 1;else return 0;
}
int main()
{while(~scanf("%d%d",&n,&m)){for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+1+n);int ans=-1;int l=0;int r=2000000000;while(r-l>=0){int mid=(l+r)/2;if(Slove(mid)==1){ans=mid;r=mid-1;}else l=mid+1;}printf("%d\n",ans);}
}

“师创杯”山东理工大学第九届ACM程序设计竞赛 热身赛 E.上色的纱雾【二分+贪心】相关推荐

  1. “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 F.校赛~校赛~【思维+规律题】

    校赛~校赛~ Time Limit: 1000MS  Memory Limit: 65536KB Submit  Statistic Problem Description SDUT 的校赛是从 20 ...

  2. 师创杯”山东理工大学第九届ACM程序设计竞赛(网络同步赛)--I皮卡丘的梦想2

    作为水题王者前去水了一波山东理工大学的校赛,这道题一个小细节坑了我2个小时,思路其实很简单,就是线段树单点更新的模板,用一个60的数组标记,如果这个区间内有I种类的化石,那么就是1,否则为0,加入新化 ...

  3. “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 I.皮卡丘的梦想2【树状数组】水题

    皮卡丘的梦想2 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 一天,一只住在 501 的皮 ...

  4. “华为杯”山东理工大学第十一届ACM程序设计竞赛(正式赛)

    猜先 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 小 A 和小 B 最近开始学习下 ...

  5. “华为杯”山东理工大学第十一届ACM程序设计竞赛 E - 九连环

    Problem Description 不知道大家有没有玩过一个叫做 九连环 的玩具,如下图所示. 如果你不了解九连环,那玄黄就带你领略九连环的奥妙:  九连环是我国传统的民间智力玩具,玩具上面有九个 ...

  6. 九连环(“华为杯”山东理工大学第十一届ACM程序设计竞赛(正式赛)网络同步赛)

    Problem Description 不知道大家有没有玩过一个叫做 九连环 的玩具,如下图所示. 如果你不了解九连环,那玄黄就带你领略九连环的奥妙:  九连环是我国传统的民间智力玩具,玩具上面有九个 ...

  7. 科林明伦杯”哈尔滨理工大学第十届程序设计竞赛B(减成1)

    科林明伦杯"哈尔滨理工大学第十届程序设计竞赛 存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多少次操作,可以让所有数都变成1. 数据保证一定有解. 输入描述: 输入t, ...

  8. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解

    "科林明伦杯"哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解 萌新又来写题解啦 原题链接 B 减成一 题意:存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一.问最少多 ...

  9. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 E 赛马 python

    "科林明伦杯"哈尔滨理工大学第十届程序设计竞赛 E 赛马 python E 好家伙 田忌赛马真就 匹配就不解释了 思路,主要咱不止一匹马 所以就最好的比 对方比这个数小的即可 所以 ...

最新文章

  1. VS 2010中对WPF4有哪些多点触摸支持?
  2. linux中cc和S的区别,为什么在linux命令(iostat)中每秒读取(r/s)一直为零?
  3. java写万年历_用java代码写万年历
  4. .net core项目部署到centos7
  5. Hadoop hdfs文件下载代码示例
  6. 深度学习优化算法总结
  7. 通过libusb操作usb设备扫描二维码
  8. 日本原装进口雪平锅,煎炸炒煮全搞定,日本人用了 1000 年
  9. 基于matlab的人脸五官边缘检测方法,人脸边缘检测方法研究与仿真
  10. java httpcomponents_java – 如何使用Apache httpcomponents从NHttpRequ...
  11. 【AI视野·今日CV 计算机视觉论文速览 第203期】Fri, 21 May 2021
  12. (小技巧)Sql server查看sql语句的执行时间(转)
  13. Selenium2+python自动化34-获取百度输入联想词
  14. java代码写selector_javaNIO:选择器--实践 Selector
  15. 九宫格c语言实验报告,9X9,九宫格测试,C编程。
  16. BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别
  17. 网络工程师面试题收集
  18. ivor horton《c语言入门经典》,《C语言入门经典》Ivor Horton第九章练习题
  19. 15种独一无二的创新数据可视化方式
  20. 域控制器丢失NETLOGON目录的解决办法

热门文章

  1. 2013年 各铁路局电话订票和互联网售票
  2. 关于apk程序的双开
  3. matlab2016b自定义极坐标区 - matlab给极坐标图加度数符号
  4. java sso单点登录源码_Java单点登录系统 sso源码下载
  5. 阿里巴巴Java开发手册终极版网页版v1.3.0
  6. 极狐gitlab在ubuntu20.04上的安装(一)初步安装
  7. 微信小程序---- 外卖小程序查看实时地图路线(骑手端用户端)【高德地图】
  8. 辅助角公式的几何意义
  9. Printjs 打印文字右对齐的问题
  10. RhinoPython圆形图案练习