yukicoder contest 424 開催記

3/29 日に yukicoder にて hirayuu_yc さんと共同 writer のコンテストを開催したので、当日までの流れや各問題の感想を詳しく書こうと思います。

準備

最初、hirayuu_yc さんに共同 writer をしないかと持ち掛けられたので、共同 writer をすることにしました。最初は X の DM 上で原案を出し合う形でしたが、それでは不便なところがあるので、原案がある程度形になってきたあたりから Discord で Writer 作業をすることにしました。

実は原案は10月頃から作っていたのですが、私の方が緑以下コンテストのwriter作業やパ研合宿一日目「Speedrun」のwriter作業で忙しかった影響で、このコンテストの準備が少し疎かになってしまいました。特に、開催当日までパ研合宿があったのはかなり影響が大きかったので、日程は早めに決めましょう。

各問題の感想

A - Simple Math (Returned)

本当はこの問題の前に簡単枠があったのですが、あまり面白くないという理由で没になりました。

解法自体は単純で、筆算のような形であまりを求めることを考えればその値は容易に求めることが出来ます。比較的サンプルが不親切で、単純に 10^{K} - 1 ( KNM で割ったあまり) としてしまうとサンプルは通りますが、もちろん WA が出てしまいます。

B - Please Hack Greedy Solution!

珍しく Output Only の課題です。もう少し解かれるだろうと予想していたのですが、あまり解かれていませんでした。構成自体も比較的簡潔です。

C - A cans -> B cans

当時、このような問題の N=1 の場合がTLに流れてきたので、それを改良して現在の形になりました。テストケースがかなり強いので、適当な嘘貪欲はすべて落ちると思います。

解法については、個数制限無しナップサック問題のプログラムを少し改良すれば解くことができます。

D - Nand Nor Matrix

実験ゲーです。私はもう少し難しいだろうと思っていたのですが(ARC力が弱い...)、Tester さんなどの判断によって E と D が入れ替えられました。

ランダムなケースで実験をすると解説の通りに法則を導き出すことができます。類題には これ などがあります。

E - FizzBuzz Letter Counting

適切な解法の判断が必要です。本解では、N の桁数を S としたとき、S 桁未満の整数に対する答えの和と、S 桁の整数に対する答えの和に分けています。S 桁の整数に対する答えを求めるパートでは、余りの扱いに注意する必要があります。

F - L to R Graph

実装が重めです。重要なのは、頂点 S_i から頂点 T_i までの長さと、サイクルの長さであることに注意すると、連結成分ごとにまとめて答えを求めようという発想に至ります。後は、動的計画法などを上手く活用することでこの問題を解くことができます。

G - L to R Graph (Another ver.)

F問題の派生です。頂点 2 が閉路に含まれるかどうかで場合分けが必要ですが、そのどちらでも比較的難しい数え上げや考察が要求されるので、(それぞれのパートはおそらく黄diffくらいだと思われますが)問題全体として見たときにかなり難しくなっています。

サンプルを見るとOEISエスパーが出来そうで、実際サンプルの答えをOEISに入れると数列を発見することができるのですが、それは嘘です。hirayuu_yc さんによると、OEISエスパーを武器にしている人を懲らしめたかったようです。実際、OEISエスパーをしようとして引っかかっている人が散見されました。

まとめ

かなり準備がギリギリになってしまいましたが、全体を通して Clar は一件も来ていませんでした。いつかは ARC のセットを作ってみたいものです。(橙になるどころか2000あったレートが1800まで落ちていますが...)