Public Judge

pjudge

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100 Hackable ✓
[-14]

# 21777. 【PR #10】抄袭

Statistics

青鱼有一个平面直角坐标系。在 x 轴上有 2n 个点,坐标从左到右分别为 (0,0),(1,0),,(2n1,0)。第 i 个点 (i1,0) 的颜色为 ci。对于每种 1in,颜色 i 恰好出现两次。

青鱼希望你在平面上画出 n 条曲线,第 i 条曲线连接两个颜色为 i 的点,且曲线之间互不相交,且所有曲线都和以 (0,0)(2n1,0) 为端点的线段不相交(除了曲线端点处;注意,这意味着本题中 n=1 时,直接用长度为 1 的线段连接 (0,0),(1,0) 是非法的)。“不相交”就是没有公共点。(如果对相交的定义有疑问,可以阅读下发的 checker)

本题中,为了输出方便,我们认为“曲线”就是由几段平行于坐标轴,且端点横纵坐标都是整数的线段构成的,具体见输出格式。下图是一个例子:

a.png

输入格式

第一行一个正整数 n

第二行 2n 个正整数,第 i 个为 ci,表示 (i1,0) 的颜色。

输出格式

若存在连接方法,在第一行输出 YES。否则在第一行输出 NO注意所有字母都是大写。

如果输出了 YES,还需要再输出 n 行,第 i 行按照如下格式输出:

  • 假设颜色为 i 的两个点分别为 (x,0),(y,0),且 x<y
  • 第一个正整数为 k,表示连接 (x,0),(y,0) 的曲线分为多少段。
  • 接下来从 (x,0) 开始,依次描述 k 段线段,第 i 段用一个字符(必须是 LRUD 中的一个)和一个正整数 z 描述,LRUD 分别表示向左((1,0))右((1,0))上((0,1))下((0,1))方向,表示这条线段是从上一条线段的末尾(最初位置为 (x,0) 开始)往该方向走 z 长度。

具体请参考样例输出。你需要保证 k2×106,且所有输出的线段上任意一个点的坐标绝对值不超过 108

如果输出了 YES 但是方案不正确,可以得到测试点 40% 的分数。注意,即使你不会输出方案,也需要输出一个符合格式的答案!

若输出了 NO,不用再输出其它东西。

样例

输入 1

4
1 2 3 4 1 2 3 4

输出 1

YES
3 U 1 R 4 D 1
5 D 1 L 2 U 3 R 6 D 2
5 D 2 R 6 U 3 L 2 D 1
3 D 1 R 4 U 1

该样例和题目描述中的图片是一样的。

下面给出了一个可以得到 40% 分数的输出:

YES
1 U 1
1 U 1
1 U 1
1 U 1

输入 2

4
1 2 3 4 1 3 2 4

输出 2

NO

样例 3,4

见下发文件。注意,下发的输出文件只给出了 YESNO,没有给出具体方案。

输出检查器

下发文件里的 checker.cpp 可以检查你的方案是否合法,但不会检查 YESNO 是否正确。用法是将 checker.cpptestlib.h 放于同一目录下编译得到可执行文件,可执行文件与输入文件 input 与输出文件 output 放于同一目录下,然后执行 checker input output output

数据范围

本题捆绑测试。对于所有数据,1n2×1051cin,每种 ci 恰好出现两次。

性质 A:保证输出为 YES 的测试点都存在一种方案使得所有输出的曲线都不跨越 x 轴。

  • 子任务 1(5 分)n2
  • 子任务 2(5 分)n3
  • 子任务 3(5 分)n4
  • 子任务 4(5 分)n7
  • 子任务 5(25 分)n1000,性质 A。
  • 子任务 6(25 分)n1000
  • 子任务 7(10 分)性质 A。
  • 子任务 8(20 分)无特殊限制。

时间限制:1s

空间限制:1024MB