ComicSeederの開発を進めた。セリフ枠の削除、設定パネルの表示、作品タイトルの設定機能などを実装した。タイトルの設定までできると格段にアプリとしての完成度が上がって感じられる。「ふと触ったときの信頼性」とでもいうべきか。Settingsボタンがちゃんと機能するようになったのも大きいかもしれない。
調子に乗ってα版として現時点のものを公開してみている。
ABC323に出た。
A: やるだけ
B: pairに載せてソートすると楽
C: やるだけ、同じ点が複数いる場合とかも考えたが制約上いないので考えなくてよかった
D: 小さい方から順にマージできるだけマージしていくだけ 計算量がよく分からないが$O(\log(\max C)N\log(\log(\max C)N)))=N\log\max C(\log(N)+\log\log\max C)$とかで押さえられると思う
E: 思いつくのに時間がかかったが、(現在時刻, 演奏中の曲が曲1かそれ以外か, 現在の曲の残り演奏時間)を乗せてDPすると解ける。$O(N(N+\max T))$とかになると思う。馬鹿みたいな単純ミスに気付くのに時間を溶かした
F: 倉庫番の最短手順を求める。Fにあるまじきやるだけ問題。動かす方向8方向場合分けするとだるいので、荷物の初期位置を原点にずらして移動方向もX正/Y正になるよう座標変換する。こうするとX方向に押す、Y方向に押す、両方に押すの3通りになる。両方で押す場合はX→YとY→Xの両方を試して良い方を選ぶ。途中で変えるメリットは無いので2通りだけでよい。
最初に高橋君が荷物を押すための位置に移動するための距離は基本普通にマンハッタン距離で良いが、直線状にどうしても荷物がくるコーナーケースにだけ注意する必要がある。避ける分2歩追加。
G: 行列木定理とかいうのがあるらしい。
Categories: 未分類