#P6430. 「JOISC 2023 Day1」JOI 国的节日 2

「JOISC 2023 Day1」JOI 国的节日 2

题目描述

题目译自 JOISC 2023 Day1 T2 「JOI 国のお祭り事情 2 / Festivals in JOI Kingdom 2

在 JOI 国,每年会举行一次全国性的节日庆典。在节日期间,共会进行 NN 场活动。每场活动的时间计划表已经确定,这 NN 个活动的计划表用长为 NN 的序列 a,ba,b 表示,序列满足以下条件:

  • 112N2N 的整数(包含两端)在序列 a,ba,b 中出现且只出现一次
  • ai<bi (1iN)a_i<b_i\ (1\le i\le N)
  • ai<ai+1 (1iN1)a_i<a_{i+1}\ (1\le i\le N-1)

ii 个活动会在节日开始之后的 aia_i 分钟时开始,在节日开始之后的 bib_i 分钟结束。

节日庆典的参与者可以参加任意活动。然而,参与者不允许参加两个时间重叠的活动。注意活动开始和结束之间两两不同。

JOI 君想要参加尽可能多的活动。直到去年,他都使用如下程序来选择他将参与的活动:

  • 对于 i=1,2,,Ni=1,2,\ldots,N,按此顺序进行如下操作。

    如果第 ii 个活动的时间不与他已经决定参加的活动时间重叠,那么他就会参加第 ii 个活动。否则他不会参加第 ii 个活动。

然而,在学习计算机科学后,JOI 君注意到上述算法不一定最大化 JOI 君参加的活动数。从今年开始,JOI 君会使用一个改进的算法,使用这个改进的算法,JOI 君可以最大化他所参加的活动数。

JOI 君想知道改进的算法在多少种情况下会输出更大的参加活动数。

给定 NN 和一个大质数 PP,写一个程序计算有多少对描述时间安排且长为 NN 的序列 a,ba,b,满足改进的算法会输出更大的参加活动数。因为答案可能很大,你的程序只需输出这个值对 PP 取模后的值即可。

输入格式

第一行输入两个整数 N,PN,P

输出格式

输出一行一个整数表示答案,因为答案可能很大,你的程序只需输出这个值对 PP 取模后的值即可。

3 100000007

2

4 100000007

28

15 999999937

935834920

数据范围与提示

对于所有输入数据,满足:

  • 1N20 0001\le N\le 20\ 000
  • 108<P<10910^8<P<10^9
  • PP 是一个质数

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 N5N\le 5 55
22 N8N\le 8
33 N30N\le 30 2727
44 N300N\le 300 1414
55 N3 000N\le 3\ 000 3636
66 无附加限制 1313