$|x_1-x_2|+|y_1-y_2|=\max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|)$

将坐标$(x,y)$逆变换为$(\frac{x+y}{2},\frac{x-y}{2})$后,询问[l,r]的最优解为中位数

离散化后用主席树支持查询

#include<cstdio>
#include<algorithm>
typedef long long ll;
const int N=100010,M=1800000;
int n,q,i,j,x,y,k,X[N],Y[N],lix[N],liy[N];
struct ChairTree{
int tot,l[M],r[M],v[M],root[N];ll sum[M];
int ins(int x,int a,int b,int c,int d){
int y=++tot;v[y]=v[x]+1,sum[y]=sum[x]+d;
if(a==b)return y;
int mid=(a+b)>>1;
if(c<=mid)l[y]=ins(l[x],a,mid,c,d),r[y]=r[x];else l[y]=l[x],r[y]=ins(r[x],mid+1,b,c,d);
return y;
}
inline ll ask(int x,int y,int k){
int a=1,b=n,mid,t,cnt=0;ll ans=0;
while(a<b){
mid=(a+b)>>1,t=v[l[x]]-v[l[y]];
if(k<=t){
cnt+=v[r[x]]-v[r[y]],ans+=sum[r[x]]-sum[r[y]];
x=l[x],y=l[y],b=mid;
}else{
cnt-=t,ans-=sum[l[x]]-sum[l[y]];
k-=t,x=r[x],y=r[y],a=mid+1;
}
}
return ans-sum[x]/v[x]*cnt;
}
}Tx,Ty;
inline int lowerx(int x){
int l=1,r=n,t,mid;
while(l<=r)if(lix[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1;
return t;
}
inline int lowery(int x){
int l=1,r=n,t,mid;
while(l<=r)if(liy[mid=(l+r)>>1]<=x)l=(t=mid)+1;else r=mid-1;
return t;
}
int main(){
scanf("%d%d",&n,&q);
for(i=1;i<=n;i++)scanf("%d",&X[i]);
for(i=1;i<=n;i++)scanf("%d",&j),Y[i]=X[i]-j,X[i]+=j;
for(i=1;i<=n;i++)lix[i]=X[i],liy[i]=Y[i];
std::sort(lix+1,lix+n+1),std::sort(liy+1,liy+n+1);
for(i=1;i<=n;i++)X[i]=lowerx(X[i]),Y[i]=lowery(Y[i]);
for(i=1;i<=n;i++)Tx.root[i]=Tx.ins(Tx.root[i-1],1,n,X[i],lix[X[i]]),Ty.root[i]=Ty.ins(Ty.root[i-1],1,n,Y[i],liy[Y[i]]);
while(q--){
scanf("%d%d",&x,&y),k=(y-x+2)/2;
printf("%.2f\n",(double)(Tx.ask(Tx.root[y],Tx.root[x-1],k)+Ty.ask(Ty.root[y],Ty.root[x-1],k))/2.0);
}
return 0;
}

  

BZOJ2735 : 世博会的更多相关文章

  1. BZOJ 2735: 世博会 主席树+切比雪夫距离转曼哈顿距离

    2735: 世博会 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 124  Solved: 51[Submit][Status][Discuss] D ...

  2. NOIP2009分数线划定【B004】

    [B004]分数线划定[难度B]—————————————————————————————————————————————————————————————————————————— [题目要求] 世博 ...

  3. FZU 1894 志愿者选拔(单调队列)

    传送门 Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查. ...

  4. ACM 房间安排

    房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间, ...

  5. FZU1894 单调队列

    S - 1019 Time Limit:1500MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  6. 房间安排-nyoj168

    描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活 ...

  7. WPF数据绑定Binding(二)

    WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...

  8. NOIP200902分数线划定

    NOIP200902分数线划定 描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根据 ...

  9. nyoj------170网络的可靠性

    网络的可靠性 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 A公司是全球依靠的互联网解决方案提供商,也是2010年世博会的高级赞助商.它将提供先进的网络协作技术,展 ...

随机推荐

  1. VS2008+Qt+助手 智能提示不显示、Qt关键字不高亮的解决办法【已解决】

    笔者使用的开发环境是VS2008+Qt4.8.5+VAssistX,有时候会出现代码关键字不能高亮显示,并且助手的智能提示不显示.问题如下 解决的办法是在助手的选项中设置其搜索路径,助手的设置通过VS ...

  2. OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能

    http://www.hopesoft.org/blog/?p=1188 http://www.imagemagick.org/download/ 2.用法 原始图片是input.jpg,尺寸:160 ...

  3. github pages 添加godaddy的dns解析

    转自: http://andrewsturges.com/blog/jekyll/tutorial/2014/11/06/github-and-godaddy.html I own a custom ...

  4. css+div绝对定位

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  5. XPath 定位----光荣之路

    被测试网页的HMTL代码 <html> <body> <div id="div1"> <input name="div1inpu ...

  6. 【转】maven仓库快速镜像

    本文转自:http://blog.csdn.net/zuoluoboy/article/details/20007819 国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的mav ...

  7. iOS 推荐一个下载用的第三方库

    AFNetworking有下载功能,但是下载功能比较基本,要实现复杂下载功能需要自己写一些代码.今天在github上找到了一个下载功能的开源项目,非常不错,链接如下:https://github.co ...

  8. Java for LeetCode 062 Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  9. SharedPreferences&SQLite比较

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使 ...

  10. Quartus signal tapii 的使用

    此功能原来已经试验过,没有笔记.这次复习巩固下. 使用PLL 的程序. 1.新建signaltap ii 文件 注意以下几个地方,会用到 添加采样时钟 . 添加采样信号: 完成之后,编译下载 运行 两 ...