QOJ.ac

QOJ

Límite de tiempo: 6 s Límite de memoria: 1024 MB Puntuación total: 100
Estadísticas

在 JOI 王国,每年举办一次全国性的节日。节日期间共有 $N$ 个活动。每个活动的日程安排都是固定的。这 $N$ 个活动的日程由长度为 $N$ 的序列 $a$ 和 $b$ 描述,满足以下条件:

  • $1$ 到 $2N$ 之间的每个整数(包含 $1$ 和 $2N$)在 $a$ 或 $b$ 中恰好出现一次。
  • $a_i < b_i$ ($1 \le i \le N$)。
  • $a_i < a_{i+1}$ ($1 \le i \le N - 1$)。

第 $i$ 个活动在节日开始后 $a_i$ 分钟开始,在节日开始后 $b_i$ 分钟结束。

节日的参与者可以选择参加任意活动。但是,不允许参加两个日程重叠的活动。(注意,不同活动的开始时间和结束时间各不相同。)

JOI-kun 希望尽可能多地参加活动。直到去年,他通过计算机上的以下程序来选择参加的活动:

对于 $i = 1, 2, \dots, N$,按此顺序执行以下操作: 如果第 $i$ 个活动的日程与他已经选择参加的其他活动的日程不重叠,他将参加第 $i$ 个活动。否则,他不参加第 $i$ 个活动。

然而,在学习了计算机科学之后,JOI-kun 注意到上述算法并不一定能使他参加的活动数量最大化。从今年开始,JOI-kun 将使用一种改进的算法。使用改进的算法,JOI-kun 将能够使他参加的活动数量最大化。

JOI-kun 想知道改进算法产生的活动数量比原算法更多的情形有多少种。

编写一个程序,给定整数 $N$ 和一个大素数 $P$,计算有多少对描述 $N$ 个活动日程的序列 $a, b$,使得改进算法产生的活动数量更多。由于答案可能非常大,请输出答案除以 $P$ 的余数。

输入格式

从标准输入读取以下数据:

$N \ P$

输出格式

输出一行到标准输出。输出应包含改进算法产生的活动数量更多的序列对 $a, b$ 的数量除以 $P$ 的余数。

数据范围

  • $1 \le N \le 20\,000$
  • $10^8 < P < 10^9$
  • $P$ 是一个素数。
  • 给定的值均为整数。

子任务

  1. (5 分) $N \le 5$
  2. (5 分) $N \le 8$
  3. (27 分) $N \le 30$
  4. (14 分) $N \le 300$
  5. (36 分) $N \le 3\,000$
  6. (13 分) 无附加限制。

样例

样例输入 1

3 100000007

样例输出 1

2

说明 1

例如,考虑 $a = (1, 2, 4)$ 且 $b = (6, 3, 5)$ 的情况。如果 JOI-kun 使用去年之前的算法,他将只参加第一个活动。另一方面,如果他使用正确的算法来最大化活动数量,他将参加第二个活动和第三个活动。因此,他将参加两个活动。在这种情况下,改进算法产生的活动数量更多。

以下是改进算法产生更多活动数量的序列对 $a, b$: $a = (1, 2, 4), b = (6, 3, 5)$ $a = (1, 2, 4), b = (5, 3, 6)$

因此,输出 2,即 2 除以 100 000 007 的余数。 该样例输入满足所有子任务的限制。

样例输入 2

4 100000007

样例输出 2

28

说明 2

共有 28 对满足条件的序列 $a, b$。因此,输出 28,即 28 除以 100 000 007 的余数。 该样例输入满足所有子任务的限制。

样例输入 3

15 999999937

样例输出 3

935834920

说明 3

共有 5 295 044 602 247 148 对满足条件的序列 $a, b$。因此,输出 935 834 920,即 5 295 044 602 247 148 除以 999 999 937 的余数。 该样例输入满足子任务 3, 4, 5, 6 的限制。

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.