問題一覧 > 通常問題

No.3138 Minimum Bracket Subsequence

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 12
作問者 : 👑 potato167
2 ProblemId : 12214 / 出題時の順位表 / 自分の提出
問題文最終更新日: 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もしくは右上の雲マークをクリックしてアカウントを作成してください。