QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 2048 MB

#22846. JAG 教授的語言

Statistiques

序列研究者 JAG 教授正在開發一種新的運算式語言。給定一個整數 $N$ 與一個由 + 和 | 組成的字串 $O = O_1 O_2 \cdots O_{N-1}$。在本題中,元素依序為 $a_1, a_2, \ldots, a_k$ 的序列記作 $[a_1, a_2, \ldots, a_k]$。

考慮以下運算式:

$$[1]\ O_1\ [2]\ O_2\ \ldots\ O_{N-1}\ [N]$$

其中,$O_i$ 是輸入字串 $O$ 的第 $i$ 個字元,作為 $[i]$ 與 $[i + 1]$ 之間的運算子。

由於未定義運算子優先順序,我們考慮在不改變運算元與運算子順序的前提下,將此運算式完全括號化的所有可能方式。透過這種方式得到的每個運算式稱為一個合法運算式。

對於每個運算式 $Z$,令 $S(Z)$ 表示由 $Z$ 所表示的序列集合。集合 $S(Z)$ 遞迴定義如下:

  • 若 $Z$ 的形式為 [i](對於某個 $i$,滿足 $1 \le i \le N$),則 $S(Z)$ 僅包含單一元素序列 $[i]$。
  • 若 $Z$ 的形式為 (X + Y),其中 $X$ 和 $Y$ 分別是其左、右子運算式,則 $S(Z)$ 由將 $S(X)$ 中的序列與 $S(Y)$ 中的序列串接所能得到的所有序列所組成。例如,若 $S(X)$ 包含 $[1, 3]$ 且 $S(Y)$ 包含 $[2, 4]$,則 $S(Z)$ 包含 $[1, 3, 2, 4]$。
  • 若 $Z$ 的形式為 (X | Y),其中 $X$ 和 $Y$ 分別是其左、右子運算式,則 $S(Z) = S(X) \cup S(Y)$。

不同的合法運算式可能會表示相同的序列。請計算至少被一個合法運算式所表示的相異序列數量。由於答案可能很大,請輸出答案對 $998\,244\,353$ 取模後的結果。

輸入格式

輸入包含單一測試資料,格式如下:

$$\begin{aligned} &N \\ &O \end{aligned}$$

第一行包含一個整數 $N$($2 \le N \le 10^6$)。第二行包含一個由 + 與 | 組成的字串 $O$($|O| = N - 1$)。

輸出格式

輸出可被表示的相異序列數量,對 $998\,244\,353$ 取模。

範例

輸入格式 1

4
+|+

輸出格式 1

4

輸入格式 2

7
||+|||

輸出格式 2

17

輸入格式 3

17
+|||+|+++||||+|+

輸出格式 3

1774

說明

在第一組範例中,運算式為 [1]+[2]|[3]+[4]。

透過加上括號可以得到以下五個合法運算式:

  • ((([1]+[2])|[3])+[4])
  • (([1]+[2])|([3]+[4]))
  • (([1]+([2]|[3]))+[4])
  • ([1]+(([2]|[3])+[4]))
  • ([1]+([2]|([3]+[4])))

以下四個相異序列至少被其中一個合法運算式所表示:

  • $[1, 2]$
  • $[1, 2, 4]$
  • $[1, 3, 4]$
  • $[3, 4]$

因此,答案為 $4$。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#2905EditorialOpenNew Editorial for Problem #22846louyuxuanView

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.