这题主要就是考虑y1两侧的最近的电梯和楼梯

当时主要是考虑  如果电梯在y1和y2中间的话   那么直接做电梯就是最优解   如果在y2右边就用abs去算

然后发现其实只考虑 y1的左右两边的电梯和楼梯即可

一共4种情况 :距离y1最近的左右的电梯  距离y1最近的左右的楼梯

难度不是很大

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int maxn = 1e5+;
long long p1[maxn],p2[maxn];
long long f(long long c[],long long i,long long j,long long k);
long long ll(long long c[],long long i,long long j,long long k);
int main()
{
long long n,m,cl,ce,v,i;
scanf("%lld%lld%lld%lld%lld",&n,&m,&cl,&ce,&v);
for(i=;i<=cl;++i)
{
scanf("%lld",p1+i);
}
for(i=;i<=ce;++i)
{
scanf("%lld",p2+i);
}
// sort(p1+1,p1+cl+1);
// sort(p2+1,p2+ce+1);
long long t,x1,x2,y1,y2;
scanf("%lld",&t);
for(i=;i<=t;++i)
{
scanf("%lld%lld%lld%lld",&x1,&y1,&x2,&y2);
if(x1 == x2)
{
printf("%lld\n",abs(y1-y2));
continue;
}
long long d1,d2,d3,d4;
d1 = f(p1, , cl,y1);
d2 = ll(p1, , cl,y1);
d3 = f(p2, , ce, y1);
d4 = ll(p2,,ce,y1);
long long s = abs(x2-x1);
if(s%v == )
s = s/v;
else
s = s/v+;
long long s1,s2;
s1 = min(abs(y1-d1)+abs(y2-d1)+abs(x2-x1),abs(y1-d2)+abs(y2-d2)+abs(x2-x1));
s2 = min(abs(y1-d3)+abs(y2-d3)+s,abs(y1-d4)+abs(y2-d4)+s);
long long minn = min(s1,s2);
cout << minn << endl;
}
}
long long f(long long c[],long long i,long long j,long long k)
{
long long mid;
if(j == )
return -1e8;
while(i <= j)
{
mid = (i+j)/;
if(k < c[mid])
{
j = mid-;
}
else if(c[mid] < k)
{
i = mid+;
}
else
return mid;
}
if(i- == )
return c[];
return c[i-];
}
long long ll(long long c[],long long i,long long j,long long k)
{
long long mid;
long long n = j;
if(j == )
return -1e8;
while(i <= j)
{
mid = (i+j)/;
if(k < c[mid])
{
j = mid-;
}
else if(c[mid] < k)
{
i = mid+;
}
else
return mid;
}
if(i>n)
return c[n];
return c[i];
}

codeforces966 A的更多相关文章

随机推荐

  1. C# fckeditor添加上传附件功能

    最近在维护系统时,要把fckediotr加上上传附件功能,好久没有用fckeditor了,现在都已经改名字,不叫这个了. 修改统计器下面的fckconfig.js,方法如下: 1.把FCKConfig ...

  2. (转)关于X64位系统IIS7下支持32位asp.net程序

    最近在windows2008 x64位系统下的IIS7下部署asp.net程序. vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的.可我的程序在引用了一个三 ...

  3. PHP swoole process的使用

    引入背景:假如我们每天有10000个订单生成,需要同步到仓储系统中去,以前做法是开启一个crontab去跑这些任务,但是发现总有感觉同步效率低,间隔时间都是分钟级别的. 解决方案测试:我们将同步订单的 ...

  4. spring boot (三): 热部署

    介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded和使用spring-boot-devtools进行热部署. 热部署是什么 大家都知道在项目开发过程中, ...

  5. Linux使用touch批量修改文件/文件夹时间戳

      Linux下touch是一个非常有用的命令. touch语法结构如下: touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间 ...

  6. [Jmeter] 用xsltproc生成html格式的报告

    1.下载xsltproc 下载地址:ftp://ftp.zlatkovic.com/libxml/libxslt-1.1.26.win32.zip 其中包含我们所需要的xsltproc可执行文件:xs ...

  7. Struts问题

    1.struts框架的5大组件:mvc,标签库,校验框架,国际化,tiles; 2.struts的9大核心类以及与mvc对应的关系: C ActionServlet RequestProcessor ...

  8. vue组件中this和$el指向

    示例代码为element ui 源码的select组件源码 控制台输出: 结论: this指向组件的实例. $el指向当前组件的DOM元素.

  9. html5 data-*自定义属性取值

    demo: <!DOCTYPE HTML> <html> <head> <title></title> <meta http-equi ...

  10. mybatis学习 十六 auto_mapping实现连表查询

    只能使用多表联合查询方式. 要求:查询出的列别和属性名相同. 点字符  "."  在 SQL 是关键字符,两侧添加反单引号(Tab键上的一个字符) <select id=&q ...