CF875E Delivery Club
题意:两个邮递员,一个初始在s1,s2。需要依次给x1,x2,...,xn送快递。求所有时刻中两个邮递员的距离最大值的最小值。n<=100000,xi<=1e9.
标程:
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
int n,s1,s2,Max,l,r,ans,a[N];
bool check(int d)
{
int l=a[n]-d,r=a[n]+d;
for (int i=n-;i>=;i--)
{
if (l<=a[i]&&a[i]<=r) l=a[i]-d,r=a[i]+d;
else l=max(l,a[i]-d),r=min(r,a[i]+d);
if (l>r) return ;
}
if (l<=s1&&s1<=r||l<=s2&&s2<=r) return ;
return ;
}
int main()
{
scanf("%d%d%d",&n,&s1,&s2);Max=abs(s1-s2);
for (int i=;i<=n;i++) scanf("%d",&a[i]),Max=max(Max,a[i]);
l=abs(s1-s2);r=Max;
while (l<=r)
{
int mid=(l+r)>>;
if (check(mid)) r=mid-,ans=mid;else l=mid+;
}
printf("%d\n",ans);
return ;
}
题解:二分答案+可行区间
最小化最大值一定是二分,转换成判定性问题,并且需要O(n)判定。
一个点最后一定在Xn,另一个点的范围Rn=[Xn-d,Xn+d]。
1.如果Xn-1在Rn中,移动不在Xn-1上的另一个点到Xn来满足限制。另一个点的范围Rn-1=[Xn-1-d,Xn-1+d]。
2.如果Xn-1不在Rn中,移动在Xn-1的那个点到Xn,另一个点的范围Rn-1=[Xn-1-d,Xn-1+d]∩Rn。
如果Ri为空则不可行。如果最后R1中不包含s1和s2,那么也不可行。
CF875E Delivery Club的更多相关文章
- 【CF875E】Delivery Club 二分+线段树
[CF875E]Delivery Club 题意:有n个快递需要依次接收,这n个快递分部在x轴上,第i个快递的位置是xi.有两个快递员,一开始分别在s0,s1,你可以任意安排哪个人收哪个快递,前提是一 ...
- 《Continuous Delivery》 Notes 1: The problem of delivering software
What is "Deployment pipeline"? A deployment pipeline is an automated implementation of you ...
- zoj 3469 Food Delivery 区间dp + 提前计算费用
Time Limit: 2 Seconds Memory Limit: 65536 KB When we are focusing on solving problems, we usual ...
- Malek Dance Club(递推)
Malek Dance Club time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 【IOS笔记】Event Delivery: The Responder Chain
Event Delivery: The Responder Chain 事件分发--响应链 When you design your app, it’s likely that you want t ...
- Content Delivery Network
Coding Standards & Best Practices 7 Reasons to use a Content Delivery Network CDN公共库汇总
- codeforces 653D D. Delivery Bears(二分+网络流)
题目链接: D. Delivery Bears time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- zoj 3742 Delivery 好题
Delivery 题目还是自己看吧 - -! 看似图论,实际上是一个考察思维以及数据结构的题. 我们对于先前和向后的边分别进行统计. 对询问离线. 小边按照左端点从大到小排序. 1.对于向后的边,询问 ...
- Repost: Set Delivery Block on SO
If SO is incomplete, then automatically set the delivery block on the SO header. as suggested by ear ...
随机推荐
- Python正则表达式如何进行字符串替换实例
Python正则表达式如何进行字符串替换实例 Python正则表达式在使用中会经常应用到字符串替换的代码.有很多人都不知道如何解决这个问题,下面的代码就告诉你其实这个问题无比的简单,希望你有所收获. ...
- hexo next主题深度优化(五),评论系统换成gittalk
文章目录 背景: 开始: 新建comments_git.js 找到comments.swig在最后一个endif之前 引入代码 pjax加入gitalk 遇到的问题 所有的页面共享的一个评论issue ...
- ICPC 2018 焦作区域赛
// 2019.10.7 练习赛 // 赛题来源:2018 ICPC 焦作区域赛 // CF链接:http://codeforces.com/gym/102028 A Xu Xiake in Hena ...
- 2015年7个重要的Web设计趋势
Web设计趋势每一年都会有所变化.但设计师的创意天赋是推动改变网页设计标准的法则.如果在2015年,网页缺少以下7个设计元素,必定被淘汰~ 1.排版更灵活 这部分的主要焦点在于,字体展现会受到新兴排版 ...
- 在html页面引用css文件的方法
引用CSS文件到Html方法-css引入,css引用 使用不同的方法来引用css样式表,最终到达的效果相同,但是使用不同方法应用的css文件将影响到SEO及网页打开速度效率. html引用css方法如 ...
- java中的反射机制和javaBean
反射 反射:就是通过一个类加载进方法区时加载到栈内存中的Class字节码文件对这个类进行解剖 通过反射可以获取到一个类的构造方法,成员方法,成员变量 反射将一个类的各个部分映射成相应的类 反射获取构造 ...
- 2018-10-8-3分钟教你搭建-gitea-在-Centos-服务器
title author date CreateTime categories 3分钟教你搭建 gitea 在 Centos 服务器 lindexi 2018-10-08 09:54:39 +0800 ...
- 读取数据库的数据并转换成List<>
一.在有帮助类DbHelperSQL的时候 1.下为其中返回SqlDataReader的方法 /// <summary> /// 执行查询语句,返回SqlDataReader ( 注意:调 ...
- 实现div里面有placeholder形式
样式中设置content为元素的data-值 p{ color: deepskyblue; } p:before{ content: attr(data-beforeContent); color: ...
- keepalived中vrrp_script,track_script,notify的使用方法
keepalived中vrrp_script,track_script,notify的使用方法转自:https://blog.51cto.com/liuzhengwei521/1929589 可以在k ...