QOJ.ac

QOJ

Time Limit: 5000 s Memory Limit: 262144 MB Total points: 100 Hackable ✓

#421. 第 k 个曲折线

Statistics

在本题中,你需要找到 $n$ 阶蜿蜒曲线(meander)中字典序第 $k$ 小的一个。

考虑平面上的一条直线。$n$ 阶蜿蜒曲线是一条与该直线相交 $2n$ 次的闭合平面曲线。你可以将蜿蜒曲线想象成一条扭曲的道路环,通过桥梁穿过河流的直线段。上述直观定义需要通过一些形式化条件来完善:曲线不能有自交或自接触,曲线与直线相交的 $2n$ 个点必须互不相同且确实是相交而非相切,此外,曲线与直线除了上述交点外没有其他公共点。

让我们定义一种绘制蜿蜒曲线的便捷方法。不失一般性,将直线水平放置,并将交点按单位距离均匀排列。注意,这些交点将曲线分成了 $2n$ 个部分。其中 $n$ 个部分位于直线之上,另外 $n$ 个部分位于直线之下。我们将这些部分中的每一个绘制为以相应直线段为直径的半圆,并根据需要将其置于直线之上或之下。可以证明,这样得到的图形就是一条蜿蜒曲线:特别地,以这种方式构造的曲线没有自交或自接触。反之亦然:每一条蜿蜒曲线都可以通过连续(同胚)变换转化为这样的图形。

现在,让我们学习如何将蜿蜒曲线写成字符串。考虑按照上述过程绘制的蜿蜒曲线。让我们沿着直线从左向右走,并在每次遇到交点时进行记录。对于每个这样的点,都有两条曲线部分与之相连:一条在直线之上,一条在直线之下。每一部分都是从当前交点向左或向右延伸的半圆。我们将区分四种可能的情况,并用一个英文字母标记每种情况:

  • 如果两个半圆都向右延伸,我们称曲线在该交点处“打开”(open),并用字母 O 表示。
  • 如果两个半圆都向左延伸,我们称曲线在该交点处“闭合”(close),并用字母 C 表示。
  • 如果下方的半圆向左延伸,上方的半圆向右延伸,我们称曲线在该交点处“向上”(up),并用字母 U 表示。
  • 如果上方的半圆向左延伸,下方的半圆向右延伸,我们称曲线在该交点处“向下”(down),并用字母 D 表示。

从左到右移动,写下我们用来标记交点的 $2n$ 个字母。事实证明,这些信息足以唯一还原通过上述过程获得的蜿蜒曲线的图形。你可以将此过程想象为顺着河流(从左到右)漂流,并记录下桥梁附近道路的配置。

如果两个蜿蜒曲线的标记不同,则认为它们是不同的。作为示例,下面展示了所有 8 种不同的 3 阶蜿蜒曲线。

对于固定的阶数 $n$,取出该阶数下所有不同的蜿蜒曲线,然后按其标记的字典序进行排序。给定阶数 $n$ 和数字 $k$,求 $n$ 阶蜿蜒曲线中字典序第 $k$ 小的标记。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$:蜿蜒曲线的阶数和序号($1 \le n \le 25$,$1 \le k \le 10^{11}$)。保证给定参数下的蜿蜒曲线存在。

输出格式

输出一个由 $2n$ 个字母组成的字符串:在 $n$ 阶蜿蜒曲线的字典序排序列表中,序号为 $k$ 的蜿蜒曲线的标记。

样例

输入 1

3 1

输出 1

ODOUCC

输入 2

3 2

输出 2

ODUDUC

输入 3

3 3

输出 3

ODUUDC

输入 4

3 4

输出 4

OODCUC

输入 5

3 5

输出 5

OOUCDC

输入 6

3 6

输出 6

OUDDUC

输入 7

3 7

输出 7

OUDUDC

输入 8

3 8

输出 8

OUODCC

说明

上述图片对应于样例。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.