12
C. 積み上げパズル

Arc 010 c

Embed Size (px)

Citation preview

Page 1: Arc 010 c

C.積み上げパズル

Page 2: Arc 010 c

m色のブロックがn個、順番に落ちてくる

プレイヤーは落ちてきたブロックを取って山に積むか、取らずに捨てるか逐次選べる

最終的な山を見て、以下の通り得点がつく

色ボーナス:ブロック1つ当たり、色によって定められた得点を得る

コンボボーナス:同じ色がn色続いている部分1つにつき、A×(n-1)点加算

コンプボーナス:m色全部が山に入っているとB点加算

落ちてくるブロックの種類・順番と配点が与えられたとき、とりうる得点の最大値を求めよ

問題概要

Page 3: Arc 010 c

入出力形式・制約

Page 4: Arc 010 c

Sample Input

5 3 3 5

R 1

G 1

B 1

RGBRR

Sample Output

13

全部とると ,13点となる

色ボーナス: 1×3 + 1×1 + 1×1 = 5

コンボボーナス: 3×(2-1) = 3

コンプボーナス: 5

例1

1

1

1

1

1

落ちてくる 取り方

コンプ

2コンボ

Page 5: Arc 010 c

Sample Input

3 3 3 5

R 1

G 3

B 2

RBR

Sample Output

5

全部とると ,4+0+0=4点

Bだけ捨ててRRと取ると ,2+3+0=5点

よって最高はRRと取ったときの5点

例2

1

2

1

落ちてくる 取り方1

2コンボ

1

1

取り方2

Page 6: Arc 010 c

Sample Input

8 3 5 3

R 1

G 1

B 1

RRGRRBRR

Sample Output

31

全部とると ,8+(5+5+5)+3=26点

Rだけとると ,6+25+0=31点

例3

1

1

1

1

落ちてくる 取り方1

コンプ

2コンボ

1

1

1

1

2コンボ

2コンボ

1

1

取り方2

6コンボ1

1

1

1

Page 7: Arc 010 c

Sample Input

8 3 5 3

R 1

G 100

B 1

RRGRRBRR

Sample Output

126

全部とると ,107+(5+5+5)+3=125点

Rだけとると ,6+25+0=31点

B以外とると ,106+(5+15)+0=126点

例4

1

100

1

1

取り方1

コンプ

2コンボ

1

1

1

1

2コンボ

2コンボ

1

1

取り方2

6コンボ1

1

1

1

1

1

取り方3

2コンボ

1

1

1

1

100

4コンボ

Page 8: Arc 010 c

想定解法

A×(6-1)

A A A

A A

=A×5

=A×5

Page 9: Arc 010 c

プロコンガチ勢には耳タコなので読み飛ばして下さい

動的計画法は、同一と見なせる状態をまとめて記憶することで、探索回数を減らすアルゴリズム

今回の場合、 i番目までのブロックがどんな並びであるかは、 i+1

番目以降のブロックを選んだときの点数に影響しないので、覚えておく必要がない(=同じと見なしてよい)

ただし、ボーナスのために以下の情報だけは必要なのでメモする 一個前の色が同じならコンボボーナスなので、一個前の色が何色か

全色含まれているとコンプボーナスなので、今までどの色を使ったか

よって、DP[何番目のブロック][直前の色][使った色(bit)]

使った色(bit)とは、k番目の色を使ったときk番目のbitが立っているような二進列で記憶できる、という意味

動的計画法(DP)

Page 10: Arc 010 c

想定解法

Page 11: Arc 010 c

全探索でTLE

テーブル再利用せずにMLE(これは単純にMLE緩くして易化してもいいかも)

法則性を探しての貪欲法チックな解法 コンボ・コンプの優先順位を付けようとするなど

もしかしたら貪欲解あるかもしれないけど思いついてない(なさそう)

Rに全色が現れるとは限らないため絶対コンプボーナスを取れないケースもある(例2)

実はマイナスポイントもちゃっかり許しているのでハマるかも なにも取らないで0点が最高得点のケースもあり得る

負のコンボボーナスでコンボすればするほど点が減ったり

コンボ作れないから全部取りすると負のコンプボーナスでやられたり

テーブルの初期化を0や-1でやるとWA(e.g.マイナスブロック取りまくってコンプボーナスとか)

やらかすかもしれないところ

Page 12: Arc 010 c

元ネタ