Max tiền tố của Tổng tiền tố

Xem dạng PDF

Gửi bài giải

Điểm: 1,70 (OI)
Giới hạn thời gian: 7.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bạn được cho xâu ~s~ gồm ~n~ kí tự ~\mathtt{g}~, ~\mathtt{e}~, hoặc ~\mathtt{?}~, thoả mãn điều kiện rằng ~s_1 = s_n = \mathtt{g}~. Hãy đếm số mảng ~a~ có độ dài ~n~ thoả mãn các điều kiện sau.

  • Mọi phần tử của ~a~ đều là ~1~ hoặc ~-1~.

  • Gọi ~p_i = \sum_{j=1}^{i} a_j~ là tổng của ~i~ phần tử đầu tiên của ~a~, với quy ước ~p_0 = 0~. Thế thì:

    • ~p_i \ge 0~ với mọi ~1 \le i \le n~.

    • Với mọi ~1 \le i \le n~ mà ~s_i = \mathtt{g}~, thì ta phải có $$\max(p_0, p_1, \dots, p_i) > \max(p_0, p_1, \dots, p_{i - 1}).$$

    • Với mọi ~1 \le i \le n~ mà ~s_i = \mathtt{e}~, thì ta phải có $$\max(p_0, p_1, \dots, p_i) = \max(p_0, p_1, \dots, p_{i - 1}).$$

Input

Dòng đầu tiên chứa số nguyên ~t~ (~1 \le t \le 1000~) – số lượng test case. Mô tả của mỗi test case như sau.

Dòng đầu tiên chứa số nguyên ~n~ (~1 \le n \le 4000~) — độ dài của ~s~.

Dòng thứ hai chứa xâu ~s~ (~|s| = n, s_i \in \{\mathtt{g}, \mathtt{e}, \mathtt{?}\}, s_1 = s_n = \mathtt{g}~).

Đảm bảo rằng tổng ~n^2~ qua tất cả các test case không quá ~30 \cdot 10^6~.

Output

Với mỗi test case, in ra một số nguyên là số lượng mảng ~a~ thoả mãn các điều kiện trên đề bài. Do số này có thể rất lớn, hãy in ra đáp án dưới modulo ~998\,244\,353~.

Scoring

Subtask Điểm Ràng buộc
1 ~500~ ~n \le 1000~ với mọi test case, ~\sum n^2 \le 10^6~
2 ~500~ ~s~ không chứa kí tự ~\mathtt{?}~ với mọi test case
3 ~750~ ~n \le 1000~ với mọi test case
4 ~2250~ Không có ràng buộc gì thêm
Tổng ~4000~

Sample Input 1

7
4
ge?g
4
g??g
4
gegg
6
geeeeg
10
g?eg??eegg
10
g????????g
27
geeeee?e??e????e?e?ee?eg??g

Sample Output 1

1
2
0
1
3
49
460

Notes

Ở test case thứ nhất, mảng duy nhất thoả mãn là ~a = [1, -1, 1, 1]~, với ~p = [1, 0, 1, 2]~:

  • Tại ~i = 1~, ta có ~\max(p_0, p_1) = 1 > 0 = \max(p_0)~, thoả mãn ~s_1 = \mathtt{g}~.

  • Tại ~i = 2~, ta có ~\max(p_0, p_1, p_2) = 1 = 1 = \max(p_0, p_1)~, thoả mãn ~s_2 = \mathtt{e}~.

  • Tại ~i = 4~, ta có ~\max(p_0, p_1, p_2, p_3, p_4) = 2 > 1 = \max(p_0, p_1, p_2, p_3)~, thoả mãn ~s_4 = \mathtt{g}~.

Ở test case thứ hai, hai mảng thoả mãn là:

  • ~a = [1, 1, 1, 1]~. Ở đây, ~p = [1, 2, 3, 4]~.

  • ~a = [1, -1, 1, 1]~. Ở đây, ~p = [1, 0, 1, 2]~.

Ở test case thứ tư, mảng duy nhất thoả mãn là ~a = [1, -1, 1, -1, 1, 1]~ với ~p = [1, 0, 1, 0, 1, 2]~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -1
    nhatquangnguyen123abc  đã bình luận lúc 8, Tháng 10, 2025, 12:52

    bài này làm như thế nào vậy mọi người cho em xin solutions dc ko