No.3138 Minimum Bracket Subsequence
問題文最終更新日: 2025-05-02 21:12:12
問題文
整数 $N, K$ および、(
,)
からなる長さ $K$ の正しい括弧列 $S$ が与えられます。
(
,)
からなる長さ $N$ の文字列 $T$ のうち、以下の条件を全て満たすものの数を $998244353$ で割った余りを求めてください。
- $T$ の部分列であって、長さ $K$ の正しい括弧列であるものが存在する
- $T$ の部分列であって、長さ $K$ の正しい括弧列であるもののうち、辞書順で最小のものは $S$ である
なお、(
,)
からなる文字列の辞書順について、(
は )
より小さい文字であるものとします。
また、正しい括弧列とは、 ()
である部分文字列を削除することを $0$ 回以上繰り返して空文字列にできる文字列を指します。
制約
- $K\leq N\leq\boldsymbol{\textcolor{FF0000}{10^{18}}}$
- $2\leq K\leq 5\times 10^{5}$
- $N, K$ は整数
- $S$ は
(
,)
からなる長さ $K$ の正しい括弧列
入力
$N\ K$ $S$
出力
答えを出力してください。
サンプル
サンプル1
入力
7 4 (())
出力
64
たとえば $T = $((())))
の場合、$T$ の部分列であって、長さ $4$ の正しい括弧列であるものは (())
のみであり、これは $S$ に等しいため条件を満たします。
$T = $((())()
の場合、$T$ の部分列であって、長さ $4$ の正しい括弧列であるものは ()()
と (())
の $2$ 種類存在し、辞書順で最小 のものは (())
であるため、条件を満たします。
サンプル2
入力
1000000000000000000 28 (()()(()))(()((()))())()(())
出力
118659188
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。