CF1444D.Rectangular Polyline
省选/NOI-
通过率:0%
时间限制:2.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
One drew a closed polyline on a plane, that consisted only of vertical and horizontal segments (parallel to the coordinate axes). The segments alternated between horizontal and vertical ones (a horizontal segment was always followed by a vertical one, and vice versa). The polyline did not contain strict self-intersections, which means that in case any two segments shared a common point, that point was an endpoint for both of them (please consult the examples in the notes section).
Unfortunately, the polyline was erased, and you only know the lengths of the horizonal and vertical segments. Please construct any polyline matching the description with such segments, or determine that it does not exist.
有人在平面上画了一条闭合的折线,该折线仅由垂直和水平线段(即平行于坐标轴的线段)组成。这些线段在水平与垂直之间交替出现(即每一条水平线段之后必然紧跟着一条垂直线段,反之亦然)。该折线不包含严格的自交点,这意味着:若任意两条线段存在公共点,则该公共点必为这两条线段的端点(请参阅“注释”部分中的示例)。
不幸的是,这条折线已被擦除,你仅知道所有水平线段与垂直线段的长度。请构造出任意一条满足上述描述、且具有给定线段长度的折线;若不存在这样的折线,则判定其不存在。
输入格式
The first line contains one integer t (1≤t≤200) —the number of test cases.
The first line of each test case contains one integer h (1≤h≤1000) — the number of horizontal segments. The following line contains h integers l1,l2,…,lh (1≤li≤1000) — lengths of the horizontal segments of the polyline, in arbitrary order.
The following line contains an integer v (1≤v≤1000) — the number of vertical segments, which is followed by a line containing v integers p1,p2,…,pv (1≤pi≤1000) — lengths of the vertical segments of the polyline, in arbitrary order.
Test cases are separated by a blank line, and the sum of values h+v over all test cases does not exceed 1000.
第一行包含一个整数 t(1≤t≤200)——测试用例的数量。
每个测试用例的第一行包含一个整数 h(1≤h≤1000)——折线中水平线段的数量。下一行包含 h 个整数 l1,l2,…,lh(1≤li≤1000)——折线中水平线段的长度,顺序任意。
接下来一行包含一个整数 v(1≤v≤1000)——折线中垂直线段的数量,随后一行包含 v 个整数 p1,p2,…,pv(1≤pi≤1000)——折线中垂直线段的长度,顺序任意。
测试用例之间以空行分隔,且所有测试用例中 h+v 的总和不超过 1000。
输出格式
For each test case output Yes, if there exists at least one polyline satisfying the requirements, or No otherwise. If it does exist, in the following n lines print the coordinates of the polyline vertices, in order of the polyline traversal: the i-th line should contain two integers xi and yi — coordinates of the i-th vertex.
Note that, each polyline segment must be either horizontal or vertical, and the segments should alternate between horizontal and vertical. The coordinates should not exceed 109 by their absolute value.
对于每个测试用例,如果存在至少一条满足要求的折线,则输出 Yes,否则输出 No。若这样的折线存在,则在接下来的 n 行中按折线遍历顺序输出各顶点的坐标:第 i 行应包含两个整数 xi 和 yi,表示第 i 个顶点的坐标。
注意:每条折线段必须为水平或垂直方向,且相邻线段需在水平与垂直方向之间交替。坐标的绝对值不得超过 109。
输入输出样例
输入#1
2 2 1 1 2 1 1 2 1 2 2 3 3
输出#1
Yes 1 0 1 1 0 1 0 0 No
输入#2
2 4 1 1 1 1 4 1 1 1 1 3 2 1 1 3 2 1 1
输出#2
Yes 1 0 1 1 2 1 2 2 1 2 1 1 0 1 0 0 Yes 0 -2 2 -2 2 -1 1 -1 1 0 0 0
输入#3
2 4 1 4 1 2 4 3 4 5 12 4 1 2 3 6 2 1 3
输出#3
Yes 2 0 2 3 3 3 3 7 4 7 4 12 0 12 0 0 No
说明/提示
In the first test case of the first example, the answer is Yes — for example, the following picture illustrates a square that satisfies the requirements:

In the first test case of the second example, the desired polyline also exists. Note that, the polyline contains self-intersections, but only in the endpoints:

In the second test case of the second example, the desired polyline could be like the one below:

Note that the following polyline is not a valid one, since it contains self-intersections that are not endpoints for some of the segments:

在第一个示例的第一个测试用例中,答案为“是”——例如,下图展示了一个满足要求的正方形:

在第二个示例的第一个测试用例中,所要求的折线也存在。注意,该折线存在自交,但仅发生在端点处:

在第二个示例的第二个测试用例中,所要求的折线可以如下图所示:

注意,以下折线不是合法的,因为它在某些线段上存在非端点的自交:

输入解题思路,AI测评打分。不知道怎么写?