QOJ.ac

QOJ

時間限制: 2.0 s 記憶體限制: 2048 MB

#22846. Ngôn ngữ của Giáo sư JAG

统计

Giáo sư JAG, một nhà nghiên cứu về dãy số, đang phát triển một ngôn ngữ biểu thức mới. Bạn được cho một số nguyên $N$ và một xâu $O = O_1 O_2 \cdots O_{N-1}$ chỉ gồm các ký tự + và |. Trong suốt bài toán này, một dãy số gồm các phần tử $a_1, a_2, \ldots, a_k$ được ký hiệu là $[a_1, a_2, \ldots, a_k]$.

Xét biểu thức sau:

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

Ở đây, $O_i$ là ký tự thứ $i$ của xâu đầu vào $O$ và được dùng làm toán tử giữa $[i]$ và $[i + 1]$.

Vì thứ tự ưu tiên của các toán tử không được định nghĩa, ta xét tất cả các cách đặt ngoặc đầy đủ cho biểu thức này mà không làm thay đổi thứ tự của các toán hạng hay toán tử. Mỗi biểu thức thu được theo cách này được gọi là một biểu thức hợp lệ.

Với mỗi biểu thức $Z$, gọi $S(Z)$ là tập hợp các dãy số được biểu diễn bởi $Z$. Tập hợp $S(Z)$ được định nghĩa đệ quy như sau:

  • Nếu $Z$ có dạng [i] với một số $i$ nào đó ($1 \le i \le N$), thì $S(Z)$ chỉ gồm duy nhất dãy số một phần tử $[i]$.
  • Nếu $Z$ có dạng (X + Y), trong đó $X$ và $Y$ lần lượt là biểu thức con bên trái và bên phải của nó, thì $S(Z)$ gồm mọi dãy số thu được bằng cách nối một dãy số trong $S(X)$ với một dãy số trong $S(Y)$. Ví dụ, nếu $S(X)$ chứa $[1, 3]$ và $S(Y)$ chứa $[2, 4]$, thì $S(Z)$ chứa $[1, 3, 2, 4]$.
  • Nếu $Z$ có dạng (X | Y), trong đó $X$ và $Y$ lần lượt là biểu thức con bên trái và bên phải của nó, thì $S(Z) = S(X) \cup S(Y)$.

Các biểu thức hợp lệ khác nhau có thể biểu diễn cùng một dãy số. Hãy tìm số lượng dãy số phân biệt được biểu diễn bởi ít nhất một biểu thức hợp lệ. Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho $998\,244\,353$.

Dữ liệu vào

Dữ liệu vào gồm một bộ test duy nhất có định dạng như sau:

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

Dòng đầu tiên chứa một số nguyên $N$ ($2 \le N \le 10^6$). Dòng thứ hai chứa một xâu $O$ gồm các ký tự + và | ($|O| = N - 1$).

Dữ liệu ra

In ra số lượng dãy số phân biệt có thể được biểu diễn, lấy phần dư theo modulo $998\,244\,353$.

Ví dụ

Dữ liệu vào 1

4
+|+

Dữ liệu ra 1

4

Dữ liệu vào 2

7
||+|||

Dữ liệu ra 2

17

Dữ liệu vào 3

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

Dữ liệu ra 3

1774

Ghi chú

Ở ví dụ đầu tiên, biểu thức là [1]+[2]|[3]+[4].

Năm biểu thức hợp lệ sau đây có thể thu được bằng cách thêm dấu ngoặc:

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

Bốn dãy số phân biệt sau đây được biểu diễn bởi ít nhất một trong các biểu thức hợp lệ này:

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

Do đó, đáp án là $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.