luogu#P4034. [Code+#2] 寄蒜几盒

[Code+#2] 寄蒜几盒

题目背景

R姓出题人:第一次出CodePlus月赛,好紧脏,怎么才能装作经常出CodePlus月赛的样子?

某W姓出题人:写题面记得要加背景。

R姓出题人:可是我的题目没有什么背景可以写,怎么办?

某W姓出题人:其实背景和题面没有关系也是可以的。

R姓出题人:原来如此,那我知道了。

题目描述

在二维平面上有nn条直线,这些直线会将平面划分成若干个区域。给定mm个点,求每个点所在的区域的面积。

聪明的读者会发现有些点所在的区域面积是无穷大的。R姓出题人早就想到了这一点,所以他给出了一个实数LL,由额外的四条直线x=L,x=L,y=L,y=Lx=L,x=-L,y=L,y=-L框定了一个有限的平面区域,并且所有的询问点都在这个框定的平面区域内部。

聪明绝顶的读者会发现如果询问点恰好落在某条直线上或者离某条直线的距离非常近,那么精度误差会严重影响答案。R姓出题人早就想到了这一点,所以在他造的数据中,任意一个询问点距离任意一条直线的距离大于10710^{-7}

输入格式

从标准输入读入数据。

第一行两个正整数n,mn,m和一个正实数LL

接下来nn行每行三个实数A,B,CA,B,C,表示这条直线的方程为Ax+By+C=0Ax+By+C=0

接下来mm行,第ii行两个实数xi,yix_i,y_i,表示第ii个点的坐标。

输出格式

输出到标准输出。

输出mm行,每行一个实数,第iii行输出的实数表示第ii个点所在的区域的面积。保留两位小数。

2 4 3
1 1 -1
-1 1 -1
0 2
-2 1
2 1
0 0
4.00
8.50
8.50
15.00

提示

对于20%20\%的数据,n,m10n,m \le 10

对于40%40\%的数据,n,m300n,m \le 300

对于100%100\%的数据,n500,m100000n \le 500,m \le 100000

对于100%100\%的数据,输入数据的绝对值107 \le 10^7,且输入数据最多保留两位小数。

来自 CodePlus 2017 12 月赛,清华大学计算机科学与技术系学生算法与竞赛协会 荣誉出品。

Credit:idea/茹逸中 命题/茹逸中 验题/陈宇,王聿中

Git Repo:https://git.thusaac.org/publish/CodePlus201712

感谢腾讯公司对此次比赛的支持。