$|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. 虚拟机里面安装Openfiler 2.99

    简介 Openfiler 由rPath Linux驱动,它是一个基于浏览器的免费网络存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN).Open ...

  2. IOS model的getter和setter方法

    总结: 当使用 self.str1 = @"xxx";时, 系统自动调用 setter方法 param_str = self.str1; 自动调用getter方法注意: 只在对象点 ...

  3. onfiguration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]

    org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Una ...

  4. asp.net 网站 或者web Api 发布

    asp.net 发布iis时可能遇到的内部服务错误常见的有两种: 1.如下图,500.19 Internal Server Error(内部服务错误) 这种错误可能是由于本机的注册表中的asp.net ...

  5. poj2965枚举

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20398 ...

  6. Watering the Fields(irrigation)

    #include <cstdio> #include <algorithm> struct edge{ int f,t,w; } ed[5000000]; int pl,n,c ...

  7. order by 指定顺序 mysql

    LOCATE(substr,str), LOCATE(substr,str,pos) 第一个语法返回字符串str第一次出现的子串SUBSTR的位置.第二个语法返回第一次出现在字符串str的子串SUBS ...

  8. 【转】Oracle数据库中Sequence的用法

    在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方. 1.Create Sequence (注释:你需要有CREATE S ...

  9. myeclipse高版本对应tomcat低版本解决办法

    今天在帮同事调试程序的时候,冒出来一个异常,网上搜搜,结果如下: 将项目部署好后,启动tomcat后报错,java.lang.NoClassDefFoundError: org/apache/juli ...

  10. 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)

    将字典转化为模型,面向模型开发,是在开发中最为常用的功能.利用KVC可以将字典转换为模型,但是前提有三个约束,一个是必须保证模型的属性个数大于等于字典个数,二是属性名称与字典的key必须相同,三是对于 ...