QOJ.ac

QOJ

时间限制: 1 s 内存限制: 1024 MB 总分: 100

#2458. 跟随弹跳球

统计

手机上有很多游戏都是基于以下想法的变体。屏幕上布满了各种凸几何物体,每个物体内部都有一个数字。屏幕底部有一把枪,当扣动扳机时,它会以连发方式发射 $n$ 个球,每个球在前一个球发射 1 秒后离开枪口。枪可以旋转,以便你设定球的发射方向。球离开枪口后,会在几何物体和墙壁之间反弹,直到它们回到屏幕底部,此时它们会消失。球之间不会相互作用——如果两个球相交,它们会直接穿过对方,互不影响。

每当球撞击到一个几何物体时,物体内部的数字就会减 1。当物体的计数达到零时,它会立即消失,而刚刚撞击它的球(或多个球)将继续前进,不再从该物体上反弹。考虑图 D.1 中的示例:如果枪(用字母 G 表示)朝向左侧 45 度角,那么所有的球都将沿着从 G 开始的之字形路径运动。注意,矩形物体可以被同一个球撞击两次——一次从左侧,一次从右侧。一旦该物体被左侧和右侧的撞击总共击中 10 次,它就会消失,屏幕上所有球的路径也会相应改变。

图 D.1:样例输入 1。

在实际游戏中,目标是尽快消除所有物体。在这里,我们只关心从固定枪角发射的一系列球。更具体地说,给定一组物体的位置、物体内部的数字、发射球的数量以及枪的朝向,确定每个物体最终的数值。

输入格式

输入以七个值 $w, h, n, m, l, r, s$ 开始(除 $l$ 外均为整数)。前四个值表示屏幕的宽度和高度($1 \le w, h \le 1\,000$)、枪发射的球的数量($1 \le n \le 500$)以及屏幕上物体的数量($1 \le m \le 20$)。最后三个值描述了枪在屏幕底边的位置($0 \le l \le w$)及其朝向,如图 D.2 所示($-10 \le r \le 10, 1 \le s \le 10$)。

图 D.2:枪的位置和朝向。

接下来是描述 $m$ 个凸物体的 $m$ 行数据。每行以一个整数 $p$ 开头,表示物体的边数($3 \le p \le 10$),随后是 $p$ 个按顺时针顺序给出的边端点 $x-y$ 坐标。之后是一个整数 $q$,表示物体内部的数值($1 \le q \le 1\,000$)。所有长度单位均为厘米,球离开枪口的速度为每秒 1 厘米。没有任何两个物体(包括屏幕边界)会相互交叉,甚至不会在一点上相交。当物体的数值达到 0 或更小时,物体会立即被移除。任何在物体被移除前 $10^{-7}$ 秒内撞击到物体的球,都会像物体已经被移除一样穿过它。最后,没有任何球会撞击到距离边端点 $10^{-7}$ 范围内的位置,并且所有球最终都会离开游戏屏幕。

输出格式

输出 $m$ 个值,表示每个物体最终的数值,顺序与输入中的顺序一致。如果任何数值为负,则输出 0。

样例

样例输入 1

20 30 5 3 10 -1 1
4 10 18 10 24 14 24 14 18 10
3 5 23 1 25 5 27 7
4 16 22 16 28 19 28 19 19 8

样例输出 1

0 2 3

样例输入 2

20 30 10 3 10.1 -1 1
4 10 18 10 24 14 24 14 18 10
3 5 23 1 25 5 27 7
4 16 22 16 28 19 28 19 19 8

样例输出 2

0 0 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.