AtCoder Regular Contest #020 (+ Beginner Contest #006) 参加記録

本日は ARC021 があり、参加したのですが、前回の第20回の記録をつけ忘れていたので先にこちらを書いておきます。

Summary

AtCoder Regular Contest #020 (公式解説)

問題A 問題B 問題C 問題D
コンテスト中の最終回答 AC
05:58(1回目)
AC
33:36(1回目)
TLE(20点)
53:13(1回目)
-
終了後じっくりと回答 - - (未挑戦) (未挑戦)
解説を読んでから回答 - - (未挑戦) (未挑戦)

総合: 220点 53:13 (0ペナルティx5分) 68位

A - 石を滑らせるゲーム

python の場合、絶対値はビルトイン関数の abs() で取得可能。

B - 縞模様

偶数個目と奇数個目を分けて色数統計をとって……とやって回答したが、解説では全正答パターンを総当たりする方法でやっていた。

教訓: 総当たりの単純な方法で計算が間に合うならそれで済ます

C - A mod B Problem

同じパターンが繰り返される超巨大整数の剰余をとる問題。

よく知らないが、これはある程度典型的な問題なんじゃないだろうか。

前回の教訓を生かし、単純な方法で部分点をとりに行った。

解説を見ると、

  • 繰り返し部分の剰余が等比級数になっていることに気づいて公式で計算する。除算は逆元で(99点解法)
  • 繰り返し部分をダブリングで計算(満点解法)

となっていたが、素直なのと応用が効くので、ダブリングの方は使えるようになっておきたい。

教訓: ダブリングは一度練習しておこう

D - お菓子の国の旅行

本番中に少し解きかけていたが、途中で方針の間違いに気づいて修正できずにタイムアップ。

chokudai 先生の解説ニコ生をみたところ、解説を諦めてしまうぐらい面倒なものだったので、今の自分は忘れることにする。

AtCoder Beginner Contest #006 記録

つづけて、Beginner Contest にも出てみたので一応記録。

AtCoder Beginner Contest #006 (公式解説)

問題A 問題B 問題C 問題D
コンテスト中の最終回答 AC
03:52(1回目)
AC
09:22(1回目)
AC
22:06(1回目)
TLE(10点) 53:13(1回目)
AC 85:08(3回目)

総合: 400点 95:08 (2ペナルティx5分) 40位

Beginnerの方は初参加でしたが、なんとか時間内に全問 AC をとれました。難易度的には、一番難しい問題でも、 Regular Contest の問題BとCの間ぐらいまでといったところでしょうか。

問題Dは満点回答を数行で綺麗にかけて「おっ」と思ったのですが、解説を読むと、典型問題だったようで。典型問題を学ぶ意味でも、Beginner Contest の方にも続けて出てみようと思います。