Codeforces Round#5

旅行先からネットブックで参加。我ながら必死すぎる。
今回は5問セット。
4問セットなら2完を目標にと思っていたけど難易度的にはどうなっているんだろう。

A

Aから順番に読んでいく。


チャットシステムを作るにあたってトラフィックをシミュレートせよ。


シミュレートした。送信→AC.

B

与えられた複数行の文字列を中央揃えにせよ。


中央揃えにした。割り切れない場合は左に1つずらせばいいっぽい?
送信→WA


あれ?スペースの数を必死こいて数える。あれ1番でおかしいな。
直す。え、今度は0番がずれるぞ?
ここで問題文をもう一度読み直す。
あ、割り切れない場合は左、右と交互にずらすらしかった。


送信→AC

C

与えられた文字列の部分文字列で、括弧の対応が正しいもののうち最大の長さをもつものについて、その長さと数を答えよ。


なるほど……最大入力サイズは10^6!?DPの問題っぽい……
ちょっと考える。よくわからん、次の問題読もう。

D

長さlの道路を初期速度0、最高速度v、最高加速度aで走るのにかかる時間を求めよ。
ただしスタートしてからdの位置に速度wのかかれた標識があり、この標識を通過する時点での速度はw以下でなければならない。


お、楽そうだ。考え始める。


……煩雑すぎる。
えーと、まず標識前までにwまで加速しきる場合と加速しきれない場合があって……
標識後はvまで加速しきる場合と加速しきらない場合がある??
二次方程式を解いて時間求めて……


書いた。サンプル合わない。なぜだ!!
コード見直す。よくわからない。doubleの変換ミスとかもない。二次方程式解き間違ってる?いや間違ってないな。
考え方違うのかな。


紙の上でサンプル1について運動の様子をシミュレートしてみる。
あ、標識前にw以上に加速してwまで減速ってパターンがあるのか。


方程式を立てる。うー紙がごちゃごちゃしてきた。時間も大分減ってきてやばいぞと焦る。
落ち着いてもう一回標識前の部分の式を立て直す。

  • vまで加速してvで少し走って、wまで減速するケース
  • 加速してすぐ減速してwにするケース
  • 加速してw未満のケース

があるのか。式立てて解く。コードに落とす。
よしサンプルも通った!おk!残り5分!


送信→WAorzなんでだろ……


なんか適当にいじって再送信→適当にいじって通るわけなかった。

結果

C,Eは1行もコード書かず、2AC1WAでペナルティあわせて46分の166位。レーティングは微増。


今回は前回よりコーディング速度が上がったと思う。
数学とDPが足をひっぱったっぽい。
というわけでまた練習の方向性が決まってきた。