BZOJ2735 : 世博会
$|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 : 世博会的更多相关文章
- BZOJ 2735: 世博会 主席树+切比雪夫距离转曼哈顿距离
2735: 世博会 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 124 Solved: 51[Submit][Status][Discuss] D ...
- NOIP2009分数线划定【B004】
[B004]分数线划定[难度B]—————————————————————————————————————————————————————————————————————————— [题目要求] 世博 ...
- FZU 1894 志愿者选拔(单调队列)
传送门 Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动.参加志愿者选拔的同学们排队接受面试官们的面试.参加面试的同学们按照先来先面试并且先结束的原则接受面试官们的考查. ...
- ACM 房间安排
房间安排 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间, ...
- FZU1894 单调队列
S - 1019 Time Limit:1500MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- 房间安排-nyoj168
描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活 ...
- WPF数据绑定Binding(二)
WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...
- NOIP200902分数线划定
NOIP200902分数线划定 描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根据 ...
- nyoj------170网络的可靠性
网络的可靠性 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 A公司是全球依靠的互联网解决方案提供商,也是2010年世博会的高级赞助商.它将提供先进的网络协作技术,展 ...
随机推荐
- quaternion*Vector3的新理解
原地址:http://www.cnblogs.com/88999660/p/3262656.html using UnityEngine; using System.Collections; publ ...
- grep与egrep
当只有一个匹配条件时:egrep pattern file等价于grep -E pattern file 例如: 当多个匹配条件时,只能用egrep -e pattern1 -e pattern2 - ...
- eclipse内存设置,tomcat内存设置,查看内存大小
首先可以通过java/jdk/bin下的java visualVM查看eclipse的内存大小和tomcat的内存大小,主要看堆,PermGen两个大小 如图: 多数情况下,eclipse抛出内存溢出 ...
- 39.递归颠倒栈[ReverseStack]
[题目] 用递归颠倒一个栈.例如输入栈{1, 2, 3, 4, 5},1在栈顶.颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶. [分析] 乍一看到这道题目,第一反应是把栈里的所有元素逐一p ...
- scp失效问题
1.症状 (1)登陆到服务器A(已在本机用ssh-add, ssh -A),scp 到服务器B时提示public key有问题: (2)/tmp/下没有ssh-XXX目录 2.原因 服务器A被pupp ...
- 第十一章 TClientDataSet
第十一章 TClientDataSet 与TTable.TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端.TClientDataSet最大 ...
- springJDBC实现查询方法二
无废话,看代码: @Override public List<Sites> queryAllSites(Pager pager) { String sql = "select * ...
- 【python】argparse模块
来源:http://www.2cto.com/kf/201412/363654.html argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.ar ...
- JDK1.7 HashMap 源码分析
概述 HashMap是Java里基本的存储Key.Value的一个数据类型,了解它的内部实现,可以帮我们编写出更高效的Java代码. 本文主要分析JDK1.7中HashMap实现,JDK1.8中的Ha ...
- Period(poj 1961)
题目大意: 给你一个字符串,求这个字符串到第i个字符为止的循环节的次数. 比如aabaabaabaab,长度为12.到第二个a时,a出现2次,输出2.到第二个b时,aab出现了2次,输出2.到第三个b ...