QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 1024 MB Puntuación total: 100

#4719. 二进制子序列

Estadísticas

科学委员会现在遇到了大麻烦:他们想出了一个不错的题目,但却不确定能否为此构建测试数据。题目描述如下:

“给定一个仅包含 0 和 1 的字符串,计算其中出现的不同非空子序列的数量。”

在此,字符串的子序列是指通过删除初始字符串中的某些字符(可能不删除)而得到的字符串。当且仅当两个子序列在至少一个位置上不同,或者它们的长度不同时,它们才被视为不同。例如,字符串 “101” 有 6 个不同的非空子序列:“0”、“1”、“10”、“01”、“101” 和 “11”。

现在,委员会当然可以随机生成测试数据,并用官方程序计算每个测试数据的答案,但这并不能满足出题人。他们希望完全掌控输出。他们想知道,对于给定文件中的每个值 $K$,有多少个二进制字符串恰好有 $K$ 个不同的非空子序列,以及满足该条件的最短字符串是什么。如果存在多个满足要求的字符串,委员会对其中任何一个都感到满意。由于第一个问题的答案可能非常大,他们只想知道该数量对 $1.000.000.007$ 取模后的结果。

输入格式

输入文件的第一行包含一个数字 $T$,表示后续 $K$ 值的数量。接下来的 $T$ 行包含你需要回答题目中描述的 2 个查询的 $K$ 值。

输出格式

对于输入文件中的每个值 $K$,你需要打印 2 行:

第一行,你应该打印恰好有 $K$ 个不同非空子序列的二进制字符串的数量(对 $1.000.000.007$ 取模),或者如果你想跳过此查询,则打印 -1。如果你打印的数字不是 -1,我们将认为你已尝试回答该问题。

第二行,如果你想跳过该查询,你应该打印 -1。否则,你应该打印由空格分隔的 $L$ 个二进制数字,这些数字应构成满足恰好有 $K$ 个不同非空子序列且长度最小的二进制字符串之一。

子任务

该问题共有 3 个子任务。你只能在第一个子任务中通过打印 -1 来跳过查询。

子任务 数据范围 分值
子任务 1 $T = 2000$ 且 $K$ 按顺序取 1 到 2000 的所有值 见下文
子任务 2 $T \le 10, K \le 100.000$ 39 分
子任务 3 $T \le 10, K \le 1.000.000$ 18 分

为了获得非零分数,你的每一个答案都必须是正确的,或者被跳过。设 $A$ 为第一个要求的正确答案数量,$B$ 为第二个要求的正确答案数量。你将获得: $$43 \times \frac{0.3 \times A + 0.7 \times B}{2000} \text{ 分}$$

样例

输入 1

3
2
3
8

输出 1

2
0 0
4
1 0
-1
1 1 0 0

说明

对于 $K = 2$,我们恰好有 2 个字符串具有 2 个不同的非空子序列:“00”(子序列为 “0” 和 “00”)以及 “11”(子序列为 “1” 和 “11”)。需要注意的是,字符串 “11” 也具有最小长度,会被评测系统接受为正确答案。

对于 $K = 3$,我们有 4 个字符串满足要求:“10”(子序列为 “0”、“1” 和 “10”)、“01”(子序列为 “0”、“1” 和 “01”)、“000”(子序列为 “0”、“00” 和 “000”)、“111”(子序列为 “1”、“11” 和 “111”)。

我们跳过了 $K = 8$ 的第一个查询,而 “1100” 恰好有 8 个不同的非空子序列:“0”、“00”、“1”、“11”、“110”、“1100”、“10” 和 “100”。

这只是一个澄清题目信息的示例。如你所见,$T$ 不等于 2000,因此这不可能是子任务 1 中的测试,这意味着通过跳过查询,我们将得到 0 分。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.