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 ...
随机推荐
- JavaScript笔记 – 程序语法设计
一.基础语法设计 JavaScript是可以与HTML标记语言混合.用于网页交互式的解释型脚本语言.由国际标准ECMAScript提供核心语言功能.文档对象模型(DOM)提供访问和操作网页内容的方法和 ...
- 一幅图解决R语言绘制图例的各种问题
一幅图解决R语言绘制图例的各种问题 用R语言画图的小伙伴们有木有这样的感受,"命令写的很完整,运行没有报错,可图例藏哪去了?""图画的很美,怎么总是图例不协调?" ...
- Day 11:函数装饰器
在说装饰器前,先说一个东西,再Python里,有一个 一切皆对象,一切皆变量. 例: def hello(name="sunjinyao"): return "hi &q ...
- mysql分区管理语句
1.key分区语句: ALTER TABLE order_info PARTITION BY KEY(orderSn) PARTITIONS 127; 2.rang分区语句: ALTER TABLE ...
- <面试题>学习面试
1.代码中要修改不可变数据会出现什么问题? 抛出什么异常? 代码不会正常运行,抛出 TypeError 异常. # 比如修改元祖.会报错 TypeError: 'tuple' object does ...
- 应用Dubbo框架打造仿猫眼项目 理解微服务核心思想
1:传统应用带来的问题 单一业务开发的迭代问题 扩容困难 部署回滚困难2:微服务概述 微服务是一种将业务系统进一步拆分的架构风格 ...
- 判断APP是否已安装
NSString *str = [NSString stringWithFormat:@"%@://%@",[dic objectForKey:@"ios_url_sch ...
- Aop 简单实例
一 , 定义aop @Aspect @Component public class MyAspect { //* com 这里有个 空格 ! @Pointcut("execution(* c ...
- 数据库MySQL--子查询
例子文件1:https://files.cnblogs.com/files/Vera-y/myemployees.zip 子查询:又称内查询,出现在其他语句中的select语句 主查询:又称外查询,内 ...
- Linux sed -i 字符串替换
sed -i 直接替换文件中的内容不输出, 如 将 laravel .env中的 QUEUE_DRIVER=sync 替换为 QUEUE_DRIVER=redis, 在Laravel的项目根目录中运行 ...