#XMOJ11396. 蛇的日光浴
蛇的日光浴
说明
时间限制:1 Sec
内存限制:256 MB
输入文件:snake.in 输出文件:snake.out
在 315 国中央的群山之中,有一片大小为 $W \times H$ 的矩形山谷。
山谷里栖息着 $2(W+H)$ 条蛇,每条蛇都在山谷的边界上筑巢生活。
蛇是爬行动物,会在白天出来晒太阳。
但这些蛇十分胆小,一旦碰到任何东西就会立刻缩回巢穴。
接下来会给出 $N$ 次操作。
第 $i$ 次操作中,位于 $(X_i,Y_i)$ 处巢穴的蛇会从巢穴向外伸出长度为 $L_i$ 的身体。
蛇的身体足够长,不会完全离开巢穴。
如果两条蛇的身体发生碰撞,两条蛇都会立刻停止当前动作并缩回巢穴。
请你求出所有操作处理完毕后,每条蛇从巢穴伸出的身体长度之和,并输出这个总和。
补充说明:
初始时所有蛇都完全缩在巢穴中。
蛇伸出身体时,一定朝向山谷内部。
山谷边界的每个整数坐标点恰好有且只有一条蛇。
操作按从上到下的顺序依次处理。
输入格式
第一行给出三个整数 $H,W,N$。
接下来 $N$ 行,每行给出三个整数 $X_i,Y_i,L_i$。
输出格式
输出所有蛇当前伸出身体的长度之和。
样例
样例 1
3 5 4
2 0 2
4 4 3
0 2 3
0 2 1
4
样例说明:
首先,第一次操作让位于 的蛇将身体从 伸到 。
接着,第二次操作让位于 $(4,4)$ 的蛇将身体从 $(4,4)$ 伸到 $(4,1)$。
然后,第三次操作让位于 $(0,2)$ 的蛇试图将身体从 $(0,2)$ 伸到 $(3,2)$,但在中途 $(2,2)$ 处与第一条蛇相撞,于是两条蛇都缩回巢穴。
最后,第四次操作让位于 $(0,2)$ 的蛇将身体从 $(0,2)$ 伸到 $(1,2)$。
因此,从 $(4,4)$ 伸到 $(4,1)$ 的蛇长度为 $3$,从 $(0,2)$ 伸到 $(1,2)$ 的蛇长度为 $1$,总和为 $4$。
样例 2
2 2 3
1 3 2
3 2 1
3 2 1
0
样例说明:
如果对已经伸出身体的蛇再次进行操作,它会继续延长身体。
若因此与其他蛇相撞,同样会缩回巢穴。
样例 3
10 10 1
0 1 100
0
样例说明:
如果蛇的身体一直延伸到对面边界,会撞到对面巢穴中的蛇,因此会缩回巢穴。
数据范围
对于 20% 的数据,$W,H \le 10$,$N \le 100$,$L_i \le 10$。
对于 40% 的数据,$W,H \le 1000$,$N \le 1000$,$L_i \le 1000$。
对于 60% 的数据,$W,H \le 10^5$,$N \le 100$,$L_i \le 10^5$。
对于 100% 的数据,$1 \le W,H \le 10^9$,$1 \le N \le 10^5$,$1 \le L_i \le 10^9$。
对于 100% 的数据,满足以下条件之一:
- $1 \le X_i \le W$ 且 $Y_i=0$ 或 $Y_i=H+1$
- $1 \le Y_i \le H$ 且 $X_i=0$ 或 $X_i=W+1$
注:$(X_i,Y_i)$ 一定是 $(0,Y_i),(W+1,Y_i),(X_i,0),(X_i,H+1)$ 中的一种,位于山谷外侧。
山谷内部为 $(1,1)$ 到 $(W,H)$。
相关
在下列比赛中: