题意:给定N个K维的点,Q次操作,或者修改点的坐标;或者问[L,R]这些点中最远的点。

思路:因为最后一定可以表示维+/-(x1-x2)+/-(y1-y2)+/-(z1-z2).....

所以我们可以保存到线段树里,每次求区间最大值和最小值即可。

注意到我们可以先确定一个点的正负号,所以时间和空间节省了一半。

#include<bits/stdc++.h>
#define mp make_pair
#define pii pair<int,int>
#define F first
#define S second
#define lson Now<<1
#define rson Now<<1|1
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const int inf=;
struct T
{
int Mx[maxn],Mn[maxn];
void update(int Now,int L,int R,int pos,int val)
{
if(L==R){ Mn[Now]=Mx[Now]=val; return ;}
int Mid=(L+R)>>;
if(pos<=Mid) update(lson,L,Mid,pos,val);
else update(rson,Mid+,R,pos,val);
Mx[Now]=max(Mx[lson],Mx[rson]); Mn[Now]=min(Mn[lson],Mn[rson]);
}
pii query(int Now,int L,int R,int l,int r)
{
if(l<=L&&r>=R) return mp(Mx[Now],Mn[Now]);
int Mid=(L+R)>>; int mx=-inf,mn=inf; pii tmp;
if(l<=Mid){
tmp=query(lson,L,Mid,l,r);
mx=max(mx,tmp.F); mn=min(mn,tmp.S);
}
if(r>Mid){
tmp=query(rson,Mid+,R,l,r);
mx=max(mx,tmp.F); mn=min(mn,tmp.S);
}
return mp(mx,mn);
}
}t[];
int main()
{
int N,K,M,opt,L,R,p,x[],KK;
scanf("%d%d",&N,&K); KK=(<<(K-))-;
rep(i,,KK){
rep(j,,N*) t[i].Mn[j]=inf,t[i].Mx[j]=-inf;
}
rep(i,,N){
rep(j,,K-) scanf("%d",&x[j]);
rep(j,,KK) {
int tmp=;
rep(k,,K-) if(j&(<<k)) tmp+=x[k];else tmp-=x[k];
t[j].update(,,N,i,tmp);
}
}
scanf("%d",&M);
rep(i,,M){
scanf("%d",&opt);
if(opt==){
scanf("%d%d",&L,&R);
int ans=-inf; pii tmp;
rep(j,,KK){
pii tmp=t[j].query(,,N,L,R);
ans=max(ans,tmp.F-tmp.S);
ans=max(ans,tmp.S-tmp.F);
}
printf("%d\n",ans);
}
else {
scanf("%d",&p); rep(j,,K-) scanf("%d",&x[j]);
rep(j,,KK) {
int tmp=;
rep(k,,K-) if(j&(<<k)) tmp+=x[k];else tmp-=x[k];
t[j].update(,,N,p,tmp);
}
}
}
return ;
}

CodeForces - 1093G:Multidimensional Queries (线段树求K维最远点距离)的更多相关文章

  1. Codeforces 1093G题解(线段树维护k维空间最大曼哈顿距离)

    题意是,给出n个k维空间下的点,然后q次操作,每次操作要么修改其中一个点的坐标,要么查询下标为[l,r]区间中所有点中两点的最大曼哈顿距离. 思路:参考blog:https://blog.csdn.n ...

  2. CF 1093G Multidimensional Queries——线段树(消去绝对值符号)

    题目:http://codeforces.com/contest/1093/problem/G 只好看看题解:https://codeforces.com/blog/entry/63877 主要是把绝 ...

  3. Codeforces 1117G Recursive Queries [线段树]

    Codeforces 洛谷:咕咕咕 思路 设\(L_i,R_i\)为\(i\)左右第一个大于它的位置. 对于每一个询问\(l,r\),考虑区间每一个位置的贡献就是\(\min(r,R_i-1)-\ma ...

  4. Codeforces 145E Lucky Queries 线段树

    Lucky Queries 感觉是很简单的区间合并, 但是好像我写的比较麻烦. #include<bits/stdc++.h> #define LL long long #define f ...

  5. [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路)

    [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i& ...

  6. [Codeforces 316E3]Summer Homework(线段树+斐波那契数列)

    [Codeforces 316E3]Summer Homework(线段树+斐波那契数列) 顺便安利一下这个博客,给了我很大启发(https://gaisaiyuno.github.io/) 题面 有 ...

  7. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  8. UVA 11983 Weird Advertisement --线段树求矩形问题

    题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和. 解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt] ...

  9. UVA 11983 Weird Advertisement(线段树求矩形并的面积)

    UVA 11983 题目大意是说给你N个矩形,让你求被覆盖k次以上的点的总个数(x,y<1e9) 首先这个题有一个转化,吧每个矩形的x2,y2+1这样就转化为了求N个矩形被覆盖k次以上的区域的面 ...

随机推荐

  1. Qt5_qt.conf

    本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原 文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作. 原文链接:用qt.conf和qtconfig ...

  2. Cassandra 和 Spark 数据处理一窥

    Apache Cassandra 数据库近来引起了很多的兴趣,这主要源于现代云端软件对于可用性及性能方面的要求. 那么,Apache Cassandra 是什么?它是一种为高可用性及线性可扩展性优化的 ...

  3. 5-15 devise(git指南,部分认为重要的内容的译文)

    git指南:https://github.com/plataformatec/devise 维基百科上有how to 的很多文章. Stackoverflow有大量问题的答案. 全的文档devise: ...

  4. Idea改项目名

    1.点开.idea文件夹,找到 modules.xml,更改里面的项目名 2.根目录下对应的.iml文件 3.右击 pom.xml 文件,选择最下面的 “ Add as maven build fil ...

  5. 44 CSS 浮动 模态框 定位

    一.浮动 float : 浮动的盒子不占原来的位置,其下方的盒子会上移 父盒子会发生塌陷现象.同一级盒子right浮动,同级左边的盒子需要左浮动,right浮动的盒子才能上来 由于浮动框不在文档的普通 ...

  6. Hive之 Python写UDF

    大自然的搬运工: 参考: 使用Python编写Hive UDF https://www.iteblog.com/archives/2329.html 使用 Python 编写 Hive UDF 环境问 ...

  7. hdu-4678-sg

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  8. 新手如何正确使用CLion之输出hello world

    以前只使用过vc6.0,在用过jetbrain的pycharm后就考虑换个c++的编译器了,第一还是考虑了vs2017但用惯了色彩鲜艳的jb产品后竟然有点不习惯vs,最后还是果断选择了jb的CLion ...

  9. OAF中为MessageTextInput添加加事件处理

    需求:现在OAF页面上有俩输入框,单价,数量,根据单价数量,自动计算MessageStyledText金额中的值,对应的基于EO的VO的字段为UnitPrice,Quantity,Total. 实现方 ...

  10. 42. Trapping Rain Water *HARD*

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...