Related
In following contests:
每次询问都遍历所有监测桩是 O(Q2),Q=2×105 时过不了。关键是把「曼哈顿菱形」变成「轴对齐正方形」。
1. 坐标旋转
令 u=a+b, v=a−b,则
∣a1−a2∣+∣b1−b2∣=max(∣u1−u2∣, ∣v1−v2∣)园区准备在地面上安放监测桩。整个园区被分成 R 行、C 列的方格,自上往下行号依次是 1∼R,自左往右列号依次是 1∼C。起初园区里一根监测桩也没有,同一个方格里允许安放好几根。
运维台会先后收到 Q 条指令,指令共有三类:
PUT a b:往第 a 行第 b 列安放一根监测桩;DEL a b:从第 a 行第 b 列撤走一根监测桩,保证这时该方格里至少还剩一根;ASK a b d:统计和方格 (a,b) 之间曼哈顿距离不大于 d 的监测桩共有几根。方格 (a1,b1) 与方格 (a2,b2) 之间的曼哈顿距离等于 ∣a1−a2∣+∣b1−b2∣。同一方格中的多根监测桩要逐根计入。
对于每条 ASK 指令,都需要回答统计结果。
首行给出三个整数 R、C 与 Q。
随后 Q 行,每行一条指令,形式为 PUT a b、DEL a b、ASK a b d 三者之一。
按指令出现的先后,每遇到一条 ASK 就输出一行一个整数,即这条指令的统计结果。
数据范围:
ASK。输入
3 5 8
PUT 1 1
PUT 3 5
PUT 2 3
PUT 2 3
ASK 2 2 1
ASK 1 5 3
DEL 2 3
ASK 3 1 3
输出
2
3
2
说明
前 4 条指令执行完,(1,1) 上有 1 根监测桩,(3,5) 上有 1 根,(2,3) 上有 2 根。
ASK 2 2 1:离 (2,3) 为 1,计入 2 根;离 (1,1) 为 2,离 (3,5) 为 4,都太远。答案是 2;ASK 1 5 3:离 (3,5) 为 2,计入 1 根;离 (2,3) 为 3,计入 2 根;离 (1,1) 为 4,太远。答案是 3;DEL 2 3 执行后,(2,3) 上只剩 1 根;ASK 3 1 3:离 (1,1) 为 2,离 (2,3) 为 3,各计入 1 根;离 (3,5) 为 4,太远。答案是 1+1=2。输入
1 4 6
ASK 1 2 5
PUT 1 4
PUT 1 4
ASK 1 1 2
ASK 1 1 3
DEL 1 4
输出
0
0
2
说明
ASK 出现时园区里还没有任何监测桩,答案是 0;DEL 指令不需要输出任何内容。In following contests:
Scan the QR code below with WeChat to sign in
设置一个用户名,下一步用微信扫码完成注册
请使用微信扫描下方二维码完成注册