ブログ名

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

†注意力†コンテスト Rebirth

コンテストページです → https://codeforces.com/gym/272327

結果

f:id:ngtkana:20200315232848p:plain

ノーペナ全完 1 位です。

これは 「† 注意力 † コンテスト」である旨を事前に伺っていましたから、正確さに全振りをしました。 もちろん 5 問とも瞬殺レベルの難易度なのですが、速さ度外視で、全部証明 & 小さいケースのテストを怠りませんでした。

ところで

これの直前にこちらのコンテストがありました。

くそなぞなぞ Beginner Contest のあとで † 注意力 † コンテストに参加する日曜日の夜、なんですか?

A - Pizza, Pizza, Pizza!!! (00:03:21)

基本的にはピースの数だけナイフを入れる必要があるのですが、偶数個に切るときには 2 箇所一気に切れますから、割る 2 です。切らない場合がコーナーケースです。

B - Two Substrings (00:13:11)

AB, BA の出現位置を全列挙です。両方とも 2 つ以上あれば YES です。そうでない場合は積集合を全探索しても間に合います。私の実装ですとコーナーケースはないのですが、考察パートはかなりややこしいです。

C - Wonder Room (00:23:07)

短辺を全探索です。 a と b のどちらが短辺側であるのか 2 通りを両方ためします。入りきっていなければ大きくします。 こちらも私の実装ですとコーナーケースはありません。スワップをためし忘れるなどでしょうか。

D - Cloning Toys (00:36:31)

普通に難問です。 雰囲気で実装をして落ちるにはこわいですから、構築をしました。 操作を逆から見ていきましょう。可能な操作は

  • x が 3 以上のとき、x から 2 を引きます。
  • x が 2 以上で y が 1 以上のとき、それぞれから 1 ずつ引きます。

これを繰り返して (x, y) = (0, 1) にできればよいです。

まず、x + y が奇数である必要があります。 さらに、x のほうがたくさん引きますから、y - 1 <= x です。 y は最終的に 1 ですから、 1 <= y です。

逆操作の構築です。まず、y-1 と x の差は必ず偶数ですから、これらが等しくなるまで x から 2 を引き続けます。 ただし、y=1, 0 < x のときがコーナーケースで、この操作を行うことができません。 最後に、y と x から、1 ずつ引くを繰り返して、AC です。

E - Treasure Hunt (00:50:41)

まず問題文読解パートが難関で、突然出てくる "cat" に、私は戸惑いました。 結局よく分かっていないのですが、問題だけはわかりましたから、良しとしましょう。(はい!?)

一番多い文字に揃えるとよいです。編集距離を貪欲に減少させていきましょう。 手数が余る場合は、a → b の代わりに a → c → b と回り道をして稼ぎましょう。 ただし、 全部同じ文字で n = 1 のときがコーナーケースで、このときには編集距離を増やすしかありません。

正直なお話、これは初見で気づけたかはわからないのですが、† 注意力界の典型問題 †(それはなんですか?)ですから、息を吸うように回避です。