高级守护
6111 CF799G Cut the pie
题目描述 Description
Arkady reached the nn -th level in Township game, so Masha decided to bake a pie for him! Of course, the pie has a shape of convex nn -gon, i.e. a polygon with nn vertices.
Arkady decided to cut the pie in two equal in area parts by cutting it by a straight line, so that he can eat one of them and give the other to Masha. There is a difficulty because Arkady has already put a knife at some point of the pie, so he now has to cut the pie by a straight line passing trough this point.
Help Arkady: find a line that passes through the point Arkady has put a knife into and cuts the pie into two parts of equal area, or determine that it’s impossible. Your program has to quickly answer many queries with the same pie, but different points in which Arkady puts a knife.
输入描述 Input Description
The first line contains two integers nn and qq ( 3<=n<=10^{4}3<=n<=104 , 1<=q<=10^{5}1<=q<=105 ) — the number of vertices in the pie and the number of queries.
nn line follow describing the polygon vertices in clockwise order. The ii -th of these line contains two integers x_{i}xi and y_{i}yi ( -10^{6}<=x_{i},y_{i}<=10^{6}−106<=xi,yi<=106 ) — the coordinates of the ii -th vertex. It is guaranteed that the polygon is strictly convex, in particular, no three vertices line on the same line.
An empty line follows.
qq lines follow describing the query points. The ii -th of these lines contain two integers x_{i}xi and y_{i}yi ( -10^{6}<=x_{i},y_{i}<=10^{6}−106<=xi,yi<=106 ) — the coordinates of the point in which Arkady puts the knife in the ii -th query. In is guaranteed that in each query the given point is strictly inside the polygon, in particular, is not on its edges.
输出描述 Output Description
For each query print single integer — the polar angle of the line that is the answer for the corresponding query, in radians. The angle should be in the segment [0;π][0;π] , the angles are measured from the direction of OXOX axis in counter-clockwise order. For example, the polar angle of the OYOY axis is . If there is no answer in that query, print -1.
If there are several answers, print any of them. Your answer is considered correct if the difference between the areas of the parts divided by the total area of the polygon doesn’t exceed 10^{-4}10−4 by absolute value. In other words, if aa and bb are the areas of the parts after the cut, then your answer is correct if and only of .
样例输入 Sample Input
输入 #1 3 1 0 0 0 3 3 0 1 1 ########### 输入 #2 5 3 6 5 6 3 5 0 0 0 0 5 5 4 3 3 5 2
样例输出 Sample Output
输出 #1 2.67794504460098710000 ########### 输出 #2 0.60228734612690049000 1.27933953226473580000 2.85805511179015910000
RemoteJudge
您提交的代码将被发送回原 OJ 进行测评,并由酷町堂抓取其测评结果。
将使用公用账户进行测评,建议您 绑定个人账户,使用自己在原 OJ 的账户提交测评。
题目描述
有一个nn边形,其中nn个顶点的坐标都已经给出。有qq次询问,每次询问都给出一个点的坐标,你需要过这个定点把这个nn边形切成面积相等的两部分,我们称这条线为等分线。对于每次询问,输出一个数,为等分线由xx坐标轴逆时针转动的角度,用弧度制输出。比如说,等分线为yy轴,那么你应该输出1.57079632679489661923132169163981.5707963267948966192313216916398,因为yy轴是由xx轴逆时针转动9090°而得,化为弧度制即为π/2π/2。
输入格式:
第一行两个整数nn和qq;
接下来nn行,一行输入22个数,为这个nn边形nn个点的坐标;
再接下来qq行,一行输入22个数,为每次询问的定点的坐标。
输出格式:
一共qq行,每行为每次询问的结果。如果过这个点无法将这个nn边形切成面积相同的两块,输出-1−1。
数据测试点范围:
33<=nn<=10^4104,11<=qq<=10^5105,所有点的坐标(包括nn边形的顶点坐标以及每次询问的定点坐标)都满足:-10^6−106<=x,yx,y<=10^6106
说明/提示
CodeForces 题目提交时的注意事项:
CodeForces 不允许多次提交同样的代码。如果您如此提交将会产生提交失败错误。如您确实需要这么做,请自行添加一些注释。
中级天翼
你这跟水没有什么区别
几乎没人会做
问一个谁都不会做的题,就是为了水
搞得跟你很能似的
丁博扬在2020-12-06 10:53:45追加了内容
6111 CF799G切馅饼
译文描述
Arkady在Township游戏中达到了第nn级,因此Masha决定为他烤馅饼!当然,饼的形状为凸nn -gon,即具有nn个顶点的多边形。
Arkady决定通过直线切割将馅饼切成相等的两个部分,这样他就可以吃掉其中的一个,再把另一个交给玛莎。这是有困难的,因为Arkady已经在饼的某个点上放了一把刀,所以他现在必须通过穿过该点的直线将饼切开。
帮助Arkady:找到一条穿过Arkady插入刀子并将饼切成相等面积的两个部分的直线,或者确定不可能。您的程序必须使用相同的饼快速地回答许多查询,但是Arkady放刀的要点不同。
输入描述
第一行包含两个整数nn和qq(3 <= n <= 10 ^ {4} 3 <= n <= 104,1 <= q <= 10 ^ {5} 1 <= q <= 105)—饼中的顶点数和查询数。
nn行如下,以顺时针顺序描述多边形顶点。这些行的ii -th包含两个整数x_ {i} xi和y_ {i} yi(-10 ^ {6} <= x_ {i},y_ {i} <= 10 ^ {6} −106 <= xi,yi <= 106)-第ii个顶点的坐标。确保多边形是严格凸的,特别是在同一条线上没有三个顶点线。
空行如下。
qq行描述了查询点。这些行的ii-th包含两个整数x_ {i} xi和y_ {i} yi(-10 ^ {6} <= x_ {i},y_ {i} <= 10 ^ {6} −106 <= xi,yi <= 106)— Arkady在第ii个查询中将刀放置到的点的坐标。保证在每个查询中给定的点都严格位于多边形内,特别是不在其边缘上。
输出描述
对于每个查询,请打印一个整数-以弧度为单位的线的极角,即对应查询的答案。角度应在段[0;π] [0;π]中,该角度是从OXOX轴的方向按逆时针顺序测量的。例如,OYOY轴的极角为 。如果该查询中没有答案,请打印-1。
如果有几个答案,请打印其中任何一个。如果零件的面积之差除以多边形的总面积之差的绝对值不超过10 ^ {-4} 10-4,则认为您的答案正确。换句话说,如果aa和bb是剪切后的部分区域,则当且仅当时,您的答案是正确的 。
样例输入
输入#1 3 1 0 0 0 3 3 0 1 1 ###########输入#2 5 3 6 5 6 3 5 0 0 0 0 5 5 4 3 3 5 2
样例输出
输出#1 2.67794504460098710000 ###########输出#2 0.60228734612690049000 1.27933953226473580000 2.85805511179015910000
远程法官
您提交的代码将被发送回原OJ进行测评,并由酷町堂抓取其测评结果。
将使用公共账户进行测评,建议您绑定个人账户,使用自己在原OJ的账户提交测评。
译文描述
有qq次询问,每次询问都指向一个点的坐标,你需要过这个定点把这个nn边形切成面积近似的两部分,我们称这条线为等分线。对于每次询问,输出一个数,为等分线由xx坐标轴逆时针转动的角度,用弧度制输出。诸如说,等分线为yy轴,那么你应该输出1.57079632679489661923132169163981.5707963267948966192313216916398,因为yy轴是由xx轴逆时针转动9090°而得,化为弧度制即为π/2π/ 2。
输入格式:
第一行两个整数nn和qq;
接下来nn行,一行输入22个数,为这个nn边形nn个点的坐标;
再接下来qq行,一行输入22个数,为每次询问的定点的坐标。
输出格式:
一共qq行,每行为每次询问的结果。如果过这个点无法将这个nn边形切成面积相同的两块,输出-1−1。
数据测试点范围:
33 <= nn <= 10 ^ 4104,11 <= qq <= 10 ^ 5105,所有点的坐标(包括nn边形的顶点坐标以及每次询问的定点坐标)都满足:-10 ^ 6−106 < = x,yx,y <= 10 ^ 6106
说明/提示
CodeForces译文提交时的注意事项:
CodeForces允许重复提交同样的代码。如果您如此提交将会产生提交错误。如您确实需要这样做,请自行添加一些注释。
但我帮你翻译了一下