見出し画像

Google Kickstart 2020のRoundA - Plates問題の解説

Google Kickstart 2020 RoundAのPlatesの問題について、解説をしてみたいと思います。
実装したものは、こちらにあります。

問題の要約

N個のスタックに、それぞれK個の皿があり、それぞれの皿には正の値(beauty value)が書かれている。ここからP個の皿を取り出した場合、その和に関して最大値を求めたいという問題です。

アルゴリズム1(TLE)

N個のスタックから皿を取り出す全パターンを考えて、そのパターンのうち、取り出した数がP個である組み合わせを対象に、和の最大値を求めれば問題を解決できそうです。
この時の全パターンは、スタック1からK個を取り出すそれぞれについて、スタック2からK個を取り出す組み合わせがあり、さらにスタック3からK個を取り出す組み合わせがあり、...、最後スタックNまでK個を取り出す場合の組み合わせとして列挙できるので、$${K^N}$$通りの組み合わせがあります。
このアルゴリズムでは、Test set1は$${1 \leq N \leq 3}$$なのでPass出来ますが、$${1 \leq N \leq 50}$$のTest set2ではTLEとなってしまいます。($${1 \leq K \leq 30}$$)

アルゴリズム2(Passed)

ここから先は

1,406字

¥ 100

この記事が気に入ったらチップで応援してみませんか?