四个关键字排序。
越里层优先级越低。
bool cmp(node a,node b){
if(a.x == b.x){
if(a.y == b.y){
if(a.z == b.z){
return a.index < b.index;
}
return a.z < b.z;
}
return a.y > b.y;
}
return a.x > b.x;
}
二维平面直角坐标系旋转
45
45
45度
旋转
45
45
45度后的平面大小
n
∗
m
−
1
n * m - 1
n∗m−1
对应坐标变换
x
−
>
m
+
x
−
y
,
y
−
>
x
+
(
y
−
1
)
x -> m+x-y , y ->x+(y-1)
x−>m+x−y,y−>x+(y−1)考虑左右对角线的关系。
旋转后的点转旋转前的点变换
p
o
s
x
=
m
+
x
−
y
,
p
o
s
y
=
x
+
y
−
1
posx = m+x-y, posy = x+y-1
posx=m+x−y,posy=x+y−1
扩大
k
k
k倍
i
n
t
r
2
=
m
i
n
(
n
+
n
−
1
,
x
+
k
)
,
r
1
=
m
a
x
(
1
,
x
−
k
)
;
int r2 = min(n + n - 1, x + k), r1 = max(1, x - k) ;
intr2=min(n+n−1,x+k),r1=max(1,x−k);
i
n
t
c
2
=
m
i
n
(
n
+
n
−
1
,
y
+
k
)
,
c
1
=
m
a
x
(
1
,
y
−
k
)
;
int c2 = min(n + n - 1, y + k), c1 = max(1, y - k) ;
intc2=min(n+n−1,y+k),c1=max(1,y−k);
对一个序列,形如这种操作
∑
i
=
1
n
∑
j
=
i
+
1
n
(
a
i
+
a
j
)
\sum_{i=1}^{n}\sum_{j=i+1}^{n}(ai+aj)
∑i=1n∑j=i+1n(ai+aj)
都可以转化为题意为对于任意的数对操作