题目传送门(内部题50)


输入格式

第一行包含四个整数$n,m,s$,表示人数、怪物数及任务交付点的位置。
第二行包含$n$个整数$p_1,p_2,...,p_n$。
第三行包含$n$个整数$q_1,q_2,...,q_n$。


输出格式

输出一行包含一个整数$ans$,表示答案。


样例

样例输入:

2 4 5
2 10
6 1 4 8

样例输出:

5


数据范围与提示

样例解释:

第一个人打位置为$4$的怪物,第二个人打位置为$8$的怪物,前者花$3$的时间,后者花$5$的时间,该方案对应的时间为$5$,且是一个最优方案。

数据范围:

对于所有数据:$1\leqslant p_i,q_i,s\leqslant {10}^9$。


题解

考虑二分答案,那么如何$judge$。

贪心解决,对于位于$s$右边的人,我们让他尽可能的打左边的怪兽,如果不能打就打右边的;反之同理。

注意边界问题即可。

时间复杂度:$\Theta(n\log \max(p_i,q_i,s)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n,m,s;
long long p[5001],q[5001],dis[5001];
bool judge(long long x)
{
int lft=0,rht=m+1;
for(int i=1;i<=n;i++)
{
if(p[i]>s)break;
while(abs(p[i]-q[lft])+dis[lft]>x)
{
lft++;
if(lft>m)return 0;
}
lft++;
if(lft>m)return 0;
}
lft--;
for(int i=n;i;i--)
{
if(p[i]<=s)break;
while(abs(p[i]-q[rht])+dis[rht]>x){rht--;if(!rht)return 0;}
rht--;
if(!rht)return 0;
}
rht++;
if(rht<=lft)return 0;
return 1;
}
int main()
{
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=n;i++)scanf("%lld",&p[i]);
for(int i=1;i<=m;i++)scanf("%lld",&q[i]);
sort(p+1,p+n+1);
sort(q+1,q+m+1);
for(int i=1;i<=m;i++)dis[i]=abs(q[i]-s);
dis[0]=dis[m+1]=1LL<<60;
long long lft=0,rht=1LL<<60;
while(lft<rht)
{
long long mid=(lft+rht)>>1;
if(!judge(mid))lft=mid+1;
else rht=mid;
}
cout<<lft<<endl;
return 0;
}

rp++

最新文章

  1. Node-webkit简介
  2. python 中的json解析库
  3. sample a texture as a rendertarget
  4. windows下php cli模式,提示出错
  5. jquery 解析xml字符串
  6. LINUX开机启动过程
  7. 使用tuple返回多个值
  8. 比NotePad++更好的文本代码(C#)编辑器Sublime Text
  9. Web多客户端单点登录
  10. 常用font-family
  11. 213. Orchard学习 二 3、001.IOrchardHost 与Autofac
  12. 获取HttpServletRequest请求Body中的内容
  13. C# WPF xml序列化 反序列化
  14. spring各个版本源码
  15. 2017 码云最火爆开源项目 TOP 50,你都用过哪些
  16. Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL
  17. Lua脚本语言入门学习其应用教程
  18. HDU 1692 Destroy the Well of Life 水题
  19. ant design Modal遮罩层颜色加深 解决方案
  20. 基于 EntityFramework 的数据库主从读写分离服务插件

热门文章

  1. rpm --qf 命令
  2. Vagrant 手册之 Vagrantfile - 机器设置 config.vm
  3. vue+element-ui国际化(i18n)
  4. java_第一年_JavaWeb(2)
  5. Codeforces - 1194E - Count The Rectangles - 扫描线
  6. How Many Answers Are Wrong (HDU - 3038)(带权并查集)
  7. 【接口工具】接口抓包工具之Charles
  8. 源码分析--LinkedList(JDK1.8)
  9. Intellij CodeComplete
  10. CSAW CTF Qualification Round 2018 - shell-&gt;code