这题主要就是考虑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. 安装composer,以及通过composer安装laravel

    1安装composer http://docs.phpcomposer.com/00-intro.html#Installation-Windows中选择windows安装 下载并且运行 Compos ...

  2. BZOJ1833或洛谷2602 [ZJOI2010]数字计数

    BZOJ原题链接 洛谷原题链接 又是套记搜模板的时候.. 对\(0\sim 9\)单独统计. 定义\(f[pos][sum]\),即枚举到第\(pos\)位,前面枚举的所有位上是当前要统计的数的个数之 ...

  3. centos7中输入ifconfig出现ens33,没有eth0(转)

    vmware安装的centos7中没有出现eth0网卡,也没有ip,不能上网,输入ifconfig后如下图 解决办法 1.编辑网卡的配置文件 vi /etc/sysconfig/network-scr ...

  4. Imageview 按比例适应屏幕大小

    DisplayMetrics dm = new DisplayMetrics();//取得窗口属性getWindowManager().getDefaultDisplay().getMetrics(d ...

  5. maven下的jar项目打包的方法

    1.先对pom项目进行install: RunAs->maven install,如果出现如下错误: Failed to execute goal org.apache.maven.plugin ...

  6. oracle导出expdp导入impdp

    conn sys/password as sysdba;创建用户test1CREATE USER test1 IDENTIFIED BY "pass1";GRANT CONNECT ...

  7. AnsiToUtf8 和 Utf8ToAnsi

    在服务端数据库的处理当中,涉及中文字符的结构体字段,需要转为Utf8后再存储到表项中.从数据库中取出包含中文字符的字段后,如果需要保存到char *类型的结构体成员中,需要转为Ansi后再保存.从数据 ...

  8. Tgrocery学习及使用

    能够学习到短文本分类模型——Tgrocery,十分感谢@GavinBuildSomething把源码及测试数据分享,在此我也作为一名学习者将自己的学习过程记录下来,希望对其他人有所帮助.   1.学习 ...

  9. 2017/2/10:Manven简介与项目管理(入门)

    1.Maven工程的创建 2.使用Manven manven配置文件主要集中在 http://m.blog.csdn.net/article/details?id=50316383

  10. 20155312 2016-2017-2 《Java程序设计》第九周学习总结

    20155312 2016-2017-2 <Java程序设计>第九周学习总结 课堂内容总结 两个类有公用的东西放在父类里. 面向对象的三要素 封装 继承 多态:用父类声明引用,子类生成对象 ...