该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
Description
在一个 n×m 的二维整数格点矩形区域内(格点坐标范围为 1≤x≤n,1≤y≤m),依次放入 k 个小球。
每个小球 i 的初始状态由初始位置 (xi,yi) 和初始速度向量 (vxi,vyi) 定义,其中 vxi,vyi∈{−1,1}。小球在离散的时间步中运动。在每一个时间步中,小球尝试根据当前速度移动到下一个位置,具体的移动逻辑如下:
- 碰撞判定:对于每一个维度,独立判断在该维度上是否即将运动到台球桌外。
- 如果 1≤x+vx≤n,则水平速度 vx 保持不变。
- 如果 x+vx<1 或 x+vx>n,则该维度的方向发生改变,即 vx←−vx。
- 垂直维度 y 同理:如果 y+vy<1 或 y+vy>m,则 vy←−vy。
- 位置更新:在确定了最终的速度方向后,小球移动到新位置 (x+vx,y+vy)。
可以前往样例解释以进一步理解具体的运动逻辑。
不同小球之间相互独立,即使处于同一位置也不会发生碰撞。小球会无限运动下去。对于每个 i∈{1,2,…,k},请你求出:在第 i 个小球放下后,在无限时间里,至少被一个小球经过的格点数量总和
第一行包含一个整数 T(1≤T≤104),表示测试数据的组数。
对于每组测试数据:
- 第一行包含三个整数 n,m,k(2≤n,m≤106,1≤k≤106),分别表示网格的宽度、高度和小球的数量。
- 接下来 k 行,第 i 行包含四个整数 xi,yi,vxi,vyi($1 \le x_i \le n, 1 \le y_i \le m, v_{x_i}, v_{y_i} \in \{-1, 1\}$),表示第 i 个小球的初始位置和速度方向。
数据保证所有测试数据的 ∑n,∑m,∑k 均不超过 106。
Output
对于每组测试数据,输出一行 k 个整数,第 i 个整数表示加入前 i 个小球后,被经过的格点总数。
Samples
1
3 3 3
2 1 1 1
1 1 1 1
3 1 1 -1
4 7 9
Notes
在 3×3 的网格中:
- 第 1 个球从 (2,1) 出发,速度为 (1,1):
- (2,1)→(3,2) (撞右墙,vx 变为 −1) →(2,3) (撞上墙,vy 变为 −1) →(1,2) (撞左墙,vx 变为 1) →(2,1)。
- 轨迹点集:{(2,1),(3,2),(2,3),(1,2)},共 4 个点。
- 第 2 个球从 (1,1) 出发,速度为 (1,1):
- (1,1)→(2,2)→(3,3) (双向撞墙,vx,vy 均取反) →(2,2)…
- 轨迹点集:{(1,1),(2,2),(3,3)}。
- 前两个球的并集为 $\{(2,1), (3,2), (2,3), (1,2), (1,1), (2,2), (3,3)\}$,共 7 个点。
- 第 3 个球从 (3,1) 出发,速度为 (1,−1):
- (3,1)→(2,2)→(1,3)→(2,2)…
- 轨迹点集:{(3,1),(2,2),(1,3)}。注意 (2,2) 之前已被小球 2 经过。
- 前三个球的并集包含网格内所有 9 个格点。