题意:给定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. XML_CPP_资料_libxml2库函数详解

    http://blog.csdn.net/hanchaoman/article/details/42557195 许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能.下面的列 ...

  2. android 管理fragment

    要管理fragment们,需使用FragmentManager,要获取它,需在activity中调用方法getFragmentManager(). 你可以用FragmentManager来做以上事情: ...

  3. Codeforces 847E - Packmen

    847E - Packmen 思路:二分时间. 代码: #include<bits/stdc++.h> using namespace std; #define ll long long ...

  4. ScriptableObjec 的简单使用

    1.ScriptableObject的创建(一): using System.Collections; using System.Collections.Generic; using UnityEng ...

  5. GetTitleAndUrl

    Sub GetTitleAndUrl() Dim strText As String Dim i As Long Dim OneA Dim IsContent As Boolean Dim PageI ...

  6. Java基础-IO流(13)

    IO流用来处理设备之间的数据传输.可以实现文件复制,上传文件和下载文件. Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输 ...

  7. 这里面盲点很多,构造函数的调用问题,还有vptr指针的++问题(已解决)

    #include<iostream> //实现vptr指针初始化问题 using namespace std; class Father { public: Father (int f) ...

  8. unity3d 博客

    博客: 1.http://my.csdn.net/caoboya 2.http://my.csdn.net/OnafioO

  9. Bata验收互评

    小组的名字和链接 优点 缺点,bug报告 最终名次 编程题全队 ①限制用户重复注册同一个邮箱②注册之后可以弹出用户名,不用手动输入③细节考虑到位④面板可拖动,增删改查,还能添加成员 Q1:程序有什么具 ...

  10. XML Publisher Using API’s(转)

    原文地址:XML Publisher Using API’s Applications Layer APIsThe applications layer of XML Publisher allows ...