CodeForces - 1093G:Multidimensional Queries (线段树求K维最远点距离)
POJ2926.做完这题后。就知道怎么求K维最远距离。
带修改很容易想到线段树。
首先,k维 。我们把1<<k 这么多种状态,每种建立一颗线段树。每个结点对应每个点维护当前状态的值。
(二维其中一个状态: + - 那第i个点 的值就是 xi-yi)
然后就相当与1<<k种状态,每种取最大值减去最小值得到ans 。。然后取个ans的最大值。
待修改即:1<<k维线段树单点更新+区间查询最大+最小值即可。
考虑到 我们可以直接for一个维度的正负,时间和空间可以直接减半//
具体怎么for?? 直接不管最后一维,(默认最后一维符号为+)然后计算答案时枚举每一维,
每一维的mx-mi 都去相反数再与ans求一次最大值。
即相当于把k维的符号相反,就能取到最后一维符号为负的情况。而前面的维度只是取反,全部情况都遍历到,取反后不影响全部情况。
所以时空减半。。太骚了这个操作 所以fcy牛逼!