#P2423. The Parallel Challenge Ballgame

    ID: 1424 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>角度扫描可行方向判断PKU Monthlydaofeng

The Parallel Challenge Ballgame

题目描述

在 2005 年 ACM/ICPC 世界总决赛之前,有一项名为“并行挑战球赛(Parallel Challenge Ballgame)”的比赛。该比赛让各队用编程技能互相竞技,规则如下:

每个队伍需提交一个名为 MyPlayer 的 C++ 类;

比赛中,每个队伍会实例化 5 个该类的对象,组成一个五人队伍;

多支队伍会在一台超级计算机(IBM Blue Gene)上进行并行对战;

比赛场地是一个矩形,由围墙包围;

场上随机分布多个球和球门(goals);

球会在遇到墙壁时反弹,反弹角度遵循光的反射原理(入射角 = 反射角);

球员可拾起球并投掷,目标是得分;

投掷的球速度很快,其他球员难以拦截;

球碰到球门的边界或内部即算得分;

球最多只允许弹墙一次。

</p>

目标

你需要编写程序来计算投掷方向中可以得分的百分比,即:从球的位置出发,考虑球在最多弹墙一次的前提下,有多少方向是能进入球门的,输出其占所有 360360^\circ 的比例(以百分比表示,保留两位小数)。

输入格式

第一行一个整数 tt,表示测试用例数量;

每个测试用例包含:

一行四个整数:x1,y1,x2,y2x_1, y_1, x_2, y_2,表示矩形场地对角线两个点的坐标(1000x,y1000-1000 \leq x, y \leq 1000);

一行两个整数:x,yx, y,表示球的位置;

一行一个整数 nn,表示球门的数量(0n1000 \leq n \leq 100);

接下来的 nn 行,每行四个整数:xi1,yi1,xi2,yi2x_{i1}, y_{i1}, x_{i2}, y_{i2},表示第 ii 个球门的对角点坐标。

输出格式

每个测试用例输出一行,表示可得分方向占比百分数,格式如下:

28.34% (四舍五入保留两位小数)

1
100 100 -100 -100 
0 0
1
10 10 -10 20
28.34%