Hatena::Grouptopcoder

hotpepsiの練習帳

2013-02-22

SRM 570

13:42

Div1 Easy (250) RobotHerb

問題

  • ロボットがXY平面上を移動する
  • 命令が数値の配列で与えられる
  • 各命令では数値nだけ直進し、n回90度右回転する
  • 命令列全体をT回実行後、スタート地点からのマンハッタン距離を求める

方針

  • サンプル読んで、シーケンスa全体をT回繰り返すことを確認
  • 実行後の向きは4通り
  • aの実行後、向きが最初と同じなら、距離が単純に増加していく
  • そうでない場合は次の実行でもまた角度が変わる
  • よく考えたら4通りどのパターンでも、4回実行したら元の角度に戻る
  • 4回愚直にaを実行して、結果の距離をT/4倍してから、T%4回実行すればよい
  • 提出
  • Passed System Test
  • https://github.com/firewood/topcoder/blob/master/srm_5xx/srm_570/RobotHerb.cpp

Div2 Hard (1000) CentaurCompanyDiv2

問題

  • 株式会社ケンタウロスにはN台のサーバがある
  • 会社を株式会社人間と株式会社馬に分割することにした
  • 各サーバは木構造で接続されている
  • 各サーバはそれぞれのどちらかに所属する
  • 分割後、元々接続されていなかったサーバはケーブルが必要になる
  • 馬は十分なケーブルを持っているが人間は持っていない
  • 人間側がケーブルを必要とする分割はできない
  • 有効な分割が何通りか求める

方針

結果

o-- 198.96pt 246th/740 rating 1364 -> 1449 (+85)

div1 mediumが難しかったためeasyの速解き回。順位はとても良かった。久しぶりの1400台。

easyはアフィン変換でも解けるようなので試してみた。繰り返し二乗法で短縮可能。

div2 hardは問題文が面白い。馬って何だろうと考えてしまった。accumulateの初期値に0と書いたら戻り値がintになってしまいはまった。初心者すぎる。

トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20130222