Universal Cup Judging System

Universal Cup

Time Limit: 1.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓
Statistics

I KMP-algoritmen är next-arrayen (även känd som LPS-arrayen, för Longest Prefix Suffix, eller felfunktionen) ett centralt begrepp. Givet en sträng $S = s_1s_2\dots s_n$ av längd $n$, definieras dess next-array $next[1..n]$ så att $next[i]$ representerar längden på det längsta lika äkta prefixet och äkta suffixet av delsträngen $S[1..i]$, specifikt $next[1] = 0$. Formellt definieras den som:

$$next[i] = \max_{k=0,\dots,i-1} \{k : S[1\dots k] = S[i-k+1\dots i]\}$$

Här definieras $S[l..r]$ som delsträngen som bildas av det $l$-te tecknet till det $r$-te tecknet i strängen $S$. Det anses att $\forall 1 \le i \le n$, $S[1\dots 0] = S[i+1\dots i]$, vilka båda är tomma strängar.

Givet en array $A[1..n]$ av längd $n$. Du ska räkna hur många olika strängar $S$ av längd $n$ definierade över teckenmängden $\Sigma$ som har en next-array som är exakt lika med den givna arrayen $A$. Storleken på teckenmängden är $m$. Skriv ut antalet sådana strängar modulo $998\,244\,353$.

Indata

Det finns flera testfall i en enda testfil. Den första raden i indatan innehåller ett enda heltal $T$ ($1 \le T \le 10^5$), vilket anger antalet testfall.

För varje testfall:

  • Den första raden innehåller två heltal $n$ ($2 \le n \le 10^5$) och $m$ ($1 \le m \le 10^6$) som representerar längden på den givna arrayen och storleken på teckenmängden.
  • Den andra raden innehåller $n$ heltal, separerade med mellanslag, som representerar den givna arrayen $A$. Det garanteras att $\forall 1 \le i \le n$, $0 \le A_i \le i - 1$.

Det garanteras att den totala summan av $n$ inte överstiger $5 \times 10^5$, dvs. $\sum n \le 5 \times 10^5$.

Utdata

För varje testfall, skriv ut en enda rad med ett enda heltal som representerar antalet strängar som uppfyller villkoren, med svaret taget modulo $998\,244\,353$.

Exempel

Indata

3
3 3
0 1 2
7 3
0 0 0 1 2 3 0
7 3
0 0 0 1 2 3 1

Utdata

3
24
0

Notering

För den andra gruppen av data i exemplet, låt oss anta att teckenmängden är $\Sigma = \{'a', 'b', 'c'\}$. De $24$ strängarna som uppfyller kraven är:

abbabbb abbabbc abcabcb abcabcc acbacbb acbacbc
accaccb accaccc baabaaa baabaac bacbaca bacbacc
bcabcaa bcabcac bccbcca bccbccc caacaaa caacaab
cabcaba cabcabb cbacbaa cbacbab cbbcbba cbbcbbb

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.