题面
题目背景
改编自USACO2007Nov铜组Exploration
题目描述
贝西在一条道路上旅行,道路上有许多地标,贝西想要在日落之前访问尽可能多的路标。将道路视为一条数轴,贝西从原点出发,道路上有n(1<=n<=50000)个地标,每个地标有一个坐标x[i](-100,000 ≤ xi ≤ 100,000)且地标的坐标各不相同,t(1≤ T ≤1000000000)分钟之后将会日落。
输入格式
第一行:两个整数t,n
第二行至第n+1行:地标的坐标x[i]
输出格式
一个整数,贝西能访问的最多的地标数
输入输出样例
1 | 25 14 |
1 | 8 |
说明/提示
贝西日落时不用回到原点。
解题思路
代码部分参考@NiveusNix的题解
由题意,想要最快捷地走更多的路,就不能有重复的路,因此分下面四种情况
从原点一直往右走
从原点一直往左走
从原点往左走一段再往右走
从原点往右走一段再往左走
首先,对输入数据进行排序。
其次,分类讨论:
第一种和第二种情况可以直接模拟过去
第三种和第四种则稍微麻烦一点点,需要使用二分来缩减范围。
设定二分中点
算出当前所需要的时间(左边所需要的时间*2 + 右边所需要的时间(另外一种情况结论相反))
判断范围,继续二分 or 结束二分得出结果
代码如下,含有注释。
1 |
|