QOJ.ac

QOJ

Límite de tiempo: 3.0 s Límite de memoria: 256 MB Puntuación total: 100

#17675. 部分配列の過半数

Estadísticas

正の整数の列における「過半数要素(majority element)」とは、その列の要素の半分以上を占める数のことである。

すべての空でない連続部分列が少なくとも1つの過半数要素を持つような列を「良い(good)」列と呼ぶ。例えば、$[1, 2, 1, 1, 3]$ は良い列である。なぜなら、$[1, 1, 3]$、$[1, 2]$、$[2, 1, 1, 3]$ といった部分列はすべて過半数要素を持っているからである。一方、$[1, 2, 1, 3]$ は良い列ではない。なぜなら、$[2, 1, 3]$ は過半数要素を持たないからである。

$1, 2, 3, ?$ からなる文字列が与えられる。各 $?$ を $1, 2, 3$ のいずれかに置き換えて良い列を作る方法の数を求めよ。答えを $10^9 + 7$ で割った余りを出力せよ。

入力

1行目には、文字列の長さである整数 $N$ ($3 \le N \le 200$) が与えられる。 2行目には、$1, 2, 3, ?$ からなる長さ $N$ の文字列が与えられる。

出力

答えを $10^9 + 7$ で割った余りを出力せよ。

小課題

  • (10点) $N \le 10$、入力は $?$ のみ。
  • (20点) $N \le 25$、入力は $?$ のみ。
  • (40点) $N \le 60$。
  • (30点) 追加の制約なし。

入出力例

入力 1

3
???

出力 1

21

注記

1つ目の例について、$3^3 = 27$ 通りの配列のうち、良い列ではないものは $[1, 2, 3]$ とその順列のみであるため、答えは $27 - 3! = 21$ となる。

入力 2

3
12?

出力 2

2

注記

2つ目の例について、$[1, 2, 1]$ と $[1, 2, 2]$ は良い列であるが、$[1, 2, 3]$ はそうではない。

入力 3

4
1?11

出力 3

3

注記

3つ目の例について、$[1, 1, 1, 1]$、$[1, 2, 1, 1]$、$[1, 3, 1, 1]$ はすべて良い列である。

入力 4

5
12213

出力 4

0

注記

4つ目の例について、$[1, 2, 2, 1, 3]$ は良い列ではないため、答えは $0$ である。

入力 5

10
???1??????

出力 5

1735

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.