CF1628F.Spaceship Crisis Management

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

NASA (Norwegian Astronaut Stuff Association) is developing a new steering system for spaceships. But in its current state, it wouldn't be very safe if the spaceship would end up in a bunch of space junk. To make the steering system safe, they need to answer the following:

Given the target position t=(0,0)t = (0, 0) , a set of nn pieces of space junk ll described by line segments li=((aix,aiy),(bix,biy))l_i = ((a_{ix}, a_{iy}), (b_{ix}, b_{iy})) , and a starting position s=(sx,sy)s = (s_x, s_y) , is there a direction such that floating in that direction from the starting position would lead to the target position?

When the spaceship hits a piece of space junk, what happens depends on the absolute difference in angle between the floating direction and the line segment, θ\theta :

  • If θ<45\theta < 45^{\circ} , the spaceship slides along the piece of space junk in the direction that minimizes the change in angle, and when the spaceship slides off the end of the space junk, it continues floating in the direction it came in (before hitting the space junk).
  • If θ45\theta \ge 45^{\circ} , the spaceship stops, because there is too much friction to slide along the space junk.

You are only given the set of pieces of space junk once, and the target position is always (0,0)(0, 0) , but there are qq queries, each with a starting position sj=(sjx,sjy)s_j = (s_{jx}, s_{jy}) .

Answer the above question for each query.

输入格式

The first line contains the the integer nn ( 1n15001 \le n \le 1500 ).

Then follows nn lines, the ii -th of which containing the 44 integers aixa_{ix} , aiya_{iy} , bixb_{ix} , and biyb_{iy} ( aix,aiy,bix,biy1000|a_{ix}|, |a_{iy}|, |b_{ix}|, |b_{iy}| \le 1000 ).

Then follows a line containing the integer qq ( 1q10001 \le q \le 1000 ).

Then follows qq lines, the jj -th of which containing the 22 integers sjxs_{jx} and sjys_{jy} ( sjx,sjy1000|s_{jx}|, |s_{jy}| \le 1000 ).

It is guaranteed that none of the segments in ll cross or touch, that tt is not on any segment in ll , that sjs_j is not on any segment in ll , and that sts \neq t .

输出格式

For each query sjs_j print an answer. If there exists a direction such that floating from sjs_j in that direction, possibly sliding along some pieces of space junk, leads to tt , print "YES". Otherwise, print "NO" (case insensitive).

输入输出样例

  • 输入#1

    3
    0 1 2 4
    1 3 -1 6
    0 -1 1 -1
    14
    -2 10
    -1 10
    0 10
    1 10
    2 10
    3 10
    4 10
    5 10
    6 10
    -1 -2
    0 -2
    1 -2
    2 -2
    3 -2

    输出#1

    YES
    YES
    YES
    YES
    YES
    NO
    NO
    NO
    YES
    YES
    NO
    NO
    NO
    YES

说明/提示

The blue cross represents the target location, and the other blue line segments represent the space junk.

Green dots represent starting locations where the answer is yes, and red dots represent starting locations where the answer is no.

The yellow lines are possible paths to the target location for the 33 rd and 1414 th queries.

The black line is a possible path from the starting location in the 66 th query, but it barely misses the target location.

首页