ブログ名

競技プログラミングやお歌のお話をする高菜です。

ARC 006 (virtual)解法

コンテストページ

atcoder.jp

解法

✔A - 宝くじ

あたりの番号のうち、自分のチケットに書いていないものを探して数えます。 1 つだった場合はボーナスさんと比較です。

✔B - あみだくじ

逆からたどります。 横に並んでいるものはどれが先でもよいので、適用していきます。

パースが難しいのですが、std::getline を使うと良いです。

✔C - 積み重ね

答えは LIS の長さです。

なぜでしょう。lower bound で LIS を求めるアルゴリズムをします。これのとおりにダンボールを置いて損をしません。

✔D - アルファベット探し

これ好きです。

A, B, C にある特徴的な連結成分サイズは 9, 14, 3 です。 グリッドの連結成分サイズを列挙して、平方数で割ってこれらを探しましょう。

後ろ 2 つは拡大されても平方数で割れば復元できるのですが、9 は 1 と紛れてしまうので無理です。 しかし、連結成分の個数を計算しておいて、B と C の分を引いて、A 1 個あたりの連結成分数で割ると良いです。

結果

f:id:ngtkana:20200119155649p:plain

易しめなセットでしたから、この速さでも 18 位です。