/*
怎么判断能否在时间k内完成扫描
贪心:每次取出最靠左边的磁头去扫描最左边的,然后再往右扫描即可
如果当前点无法扫到最左侧点,那么后继点一样无法扫到
*/
#include<bits/stdc++.h>
#define maxn 100005
#define ll long long
using namespace std; int n,m;
ll h[maxn],p[maxn]; int judge(ll x){
ll time1,time2;
int index=;
for(int i=;i<=n;i++){
if(h[i]-p[index]>x) return ;
if(p[index]>=h[i]){//直接往右扫描
while(index<=m && p[index]<=x+h[i])
index++;
if(index>m) return ;//
}
else {
time1=(x-(h[i]-p[index]))/;
time2=x-(h[i]-p[index])*;
time1=max(time1,time2); //先往左在往右或者先往右再往左的最长右走时间
while(index<=m && p[index]<=time1+h[i])
index++;
if(index>m) return ;
}
}
return ;
} int main(){
while(scanf("%d%d",&n,&m)==){
for(int i=;i<=n;i++) scanf("%lld",&h[i]);
for(int i=;i<=m;i++) scanf("%lld",&p[i]);
ll l=,r=max(h[n],p[m])*,ans=;
while(l<=r){
ll mid=l+r>>;
if(judge(mid))
ans=mid,r=mid-;
else l=mid+;
}
printf("%I64d\n",ans);
}
}

最新文章

  1. Vue.js——vue-router 60分钟快速入门
  2. 【POJ2699】The Maximum Number of Strong Kings(二分,最大流)
  3. KEngine:Unity3D资源的打包、加载、调试监控
  4. Centos7安装Zabbix3.0
  5. 开源的c语言人工神经网络计算库 FANN
  6. nodejs开发环境sublime配置
  7. 10453 Make Palindrome (dp)
  8. 用标准Struts2+mvc写的用户管理
  9. bzoj 4826: [Hnoi2017]影魔 [主席树 单调栈]
  10. spring cloud_1_mm_ribbon
  11. Apache Tomcat RCE(CVE-2017-12615 )漏洞案例分析
  12. MFC相关函数汇总(持续汇总跟新中)
  13. 无法加载 Parallels 驱动器
  14. 计蒜客 31452 - Supreme Number - [简单数学][2018ICPC沈阳网络预赛K题]
  15. 2-20 MySQL集群搭建实现高可用
  16. PHP 类与对象 全解析(三)
  17. IE屏蔽鼠标右键、禁止复制粘贴等功能
  18. 119. Pascal&#39;s Triangle II (Graph; WFS)
  19. Alpha事后诸葛亮(团队)
  20. [LOJ2983] [WC2019] 数树

热门文章

  1. 功能要求:定义一个两行三列的二维数组 names 并赋值,使用二重循环输出二维数组中的元素。
  2. 51Nod1376 (dp + BIT // cdq分治)
  3. python字典遍历的几种方法
  4. Linux中如何安装RAR
  5. windows下boost编译(vs2010)
  6. Ruby 集合数组常用遍历方法
  7. UESTC - 1167 一句话题意
  8. bzoj千题计划301:bzoj4259: 残缺的字符串
  9. Netty 实现HTTP文件服务器
  10. CSS魔法(四)常用属性