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