問題一覧 > 通常問題

No.2705 L to R Graph (Another ver.)

レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 8
作問者 : hirayuu_yc / テスター : hamamu Magentor
1 ProblemId : 10648 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-03-29 19:31:48

注意

この問題は F - L to R Graph から派生した問題ですが、F問題とは独立に解くことが可能です。

問題文

以下のような問題を考えます。ただし、L to R Graphとの重要な相違点を赤字で示しています。

11 以上 NN 以下の整数からなる長さ NN の数列 A=(A1,A2,,AN)A=(A_1,A_2,\dots,A_N)1LRN1\leq L\leq R\leq N を満たす L,RL,R1SN,1TN,ST1\leq S\leq N,1\leq T\leq N,S\ne T を満たす S,TS,T が与えられます。

F(i)=AiF(i)=A_i とします。また、F(i)F(i)kk 回合成したものを Fk(i)F^k(i) とします。

頂点に 11 から NN までの番号が付いた NN 頂点 00 辺の有向グラフがあります。このグラフに以下の操作を行います。

  • 1iN,LkR1 \leq i \leq N,L \leq k \leq R について頂点 ii から頂点 Fk(i)F^k(i) への辺を張る。

頂点 SS から頂点 TT に到達できるか判定してください。

NN と素数 PP が与えられます。入力としてあり得るものは NN×N(N+1)2×N(N1)N^N\times \frac{N(N+1)}{2}\times N(N-1) 通りありますが、そのうち、頂点 SS から頂点 TT に到達できる入力の個数を PP で割った余りを求めてください。

入力

N PN\ P
  • 2N1052\leq N\leq 10^5
  • 108P10910^8\leq P\leq 10^9
  • PP は素数
  • 入力はすべて整数

出力

11 行に、答えを出力してください。

サンプル

サンプル1
入力
2 998244353
出力
10

条件を満たす入力は以下の 1010 個です。

  • A=(2,2),L=1,R=1,S=1,T=2A=(2,2),L=1,R=1,S=1,T=2
  • A=(2,2),L=1,R=2,S=1,T=2A=(2,2),L=1,R=2,S=1,T=2
  • A=(2,2),L=2,R=2,S=1,T=2A=(2,2),L=2,R=2,S=1,T=2
  • A=(2,1),L=1,R=1,S=1,T=2A=(2,1),L=1,R=1,S=1,T=2
  • A=(2,1),L=1,R=2,S=1,T=2A=(2,1),L=1,R=2,S=1,T=2
  • A=(1,1),L=1,R=1,S=2,T=1A=(1,1),L=1,R=1,S=2,T=1
  • A=(1,1),L=1,R=2,S=2,T=1A=(1,1),L=1,R=2,S=2,T=1
  • A=(1,1),L=2,R=2,S=2,T=1A=(1,1),L=2,R=2,S=2,T=1
  • A=(2,1),L=1,R=1,S=2,T=1A=(2,1),L=1,R=1,S=2,T=1
  • A=(2,1),L=1,R=2,S=2,T=1A=(2,1),L=1,R=2,S=2,T=1

たとえば、A=(1,2),L=1,R=1,S=1,T=2A=(1,2),L=1,R=1,S=1,T=2A=(2,1),L=2,R=2,S=1,T=2A=(2,1),L=2,R=2,S=1,T=2 などは条件を満たしません。

サンプル2
入力
3 924844033
出力
378
サンプル3
入力
12 313883611
出力
211838194

答えを PP で割った余りを求めることを忘れないでください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。