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もしくは右上の雲マークをクリックしてアカウントを作成してください。
potato167