Hatena::Grouptopcoder

hotpepsiの練習帳

2012-03-04

SRM 535 Div2

03:20

Easy (250) FoxAndIntegers

問題

  • A-BとB-CとA+BとB+CからA、B、Cを求める。

方針

Medium (500) FoxAndGCDLCM

問題

  • 最大公約数Gと最小公倍数Lが与えられる。
  • GとLを満たす数AとBの和の最小値を求める。

方針

  • LがG未満とかのケースは不能としてはじく
  • ぐぐるとA×B=G×Lだが、直接役には立たない
  • 別の表現をするとA=x×G、B=y×G、x×y×G=L
  • すなわちL÷G=x×y
  • (xとyの和の最小値)×Gが答え
  • xとyの組み合わせを因数分解して全探索するのは面倒
  • 範囲は1~sqrt(x×y)、たかだか10^6だから全数探索すればいいや
  • sample4が合わない
  • AとBのGCDがGになるためには、xとyは互いに素、つまりxとyのGCDは1
  • 合った!
  • https://github.com/firewood/topcoder/blob/master/srm_5xx/srm_535/FoxAndGCDLCM.cpp

Hard (1000) FoxAndSorting

問題

  • 0から1000000000000000000までの数を、桁の数値の和で、和が同じもの同士は辞書順で並べる。
  • idx番目の数値を求める。

方針

結果

oo- 240.45 + 296.80 = 537.25pt 63rd 1196 -> 1258

div1! 100位以内に入れればいいやと思ってたので目標はクリア。

easyは手抜き実装すると落ちるので、良いdiv2easyだと思った。実際偶数チェックしてない人とか、引数チェックをコピペミスしてちゃんと書けてない人とかいた。撃墜は遅くて間に合わなかった。

mediumは自信ないのでGCDとLCMをぐぐったら基本的すぎてあまり載ってなかった。和が最小になるのは、xy=aとx+y=bの接点ぽい感じでxとyが近い数になるとき。なのでsqrt(xy)から試行すればminで更新する必要ないかも。あとGCCには__gcdがあるのでそれ使えばよかったとか。点数はいまいちだけど最終的にはよかった。challengeは、単純なバグ持ちの人は即落とされて、バグってはいるけどサンプルは通るみたいな人だけ残ったので、控えた。

hardはopenしたけど全く見当がつかなかったので残り時間はmediumを見直した。

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

2012-02-25

SRM 534 Div2

16:05

Easy (250) EllysDirectoryListing

問題

  • ディレクトリのファイルのリストがある。
  • リストの最後がカレントディレクトリとルートディレクトリでないとき、最初に見つかったディレクトリを末尾と交換する。
  • それでもリストの最後がカレントディレクトリとルートディレクトリでないとき、最初に見つかったディレクトリを末尾のひとつ前と交換する。

方針

Medium (500) EllysCheckers

問題

  • N個のマスからなる盤面がある。
  • マスは空または駒が置かれている。
  • 駒の右が空いていれば駒を一つ右に移動できる。
  • 駒の右とその右が駒でその右が空いていれば、駒を三つ移動できる。
  • 盤面の一番右の駒は直ちに取り除かれる。
  • 二人のプレーヤーで交互に移動操作をする。
  • 動かせなかったら負けとするとき、最初のプレーヤーが勝つかどうかを求める。

方針

Hard (1000) EllysFiveFriends

問題

  • Ellyたちは5人でゲームをする。
  • 円陣を組み、それぞれ数値を持つ。
  • 1ターンでは隣同士の任意の2人の数値をピックアップする。
  • 両方の数値が奇数であれば「りんごアクション」で両方の数値から1を引くことができる。
  • 両方の数値が1以上であれば「オレンジアクション」で両方の数値を1/2できる。
  • 全員の数値がゼロになると勝利となる。
  • 何通りの勝利パターン数があるかを求める。

方針

結果

225.30 + 310.77 + 50-25 = 561.07 87th rating 1152 -> 1196

限りなくブルーに近い緑

easyは、ディレクトリを消してから末尾に足しているのを撃墜した。TopCoderは解が決まっていて末尾の順序が違っても落ちるので、そこは狙っていた。

末尾がディレクトリの場合には先頭から2回ループする必要があるのだが、それをやってない人がいて、気づけなかった。まだまだチャレンジ精神が足りない。

mediumは2回連続メモ化再帰で解いたが、今回は偶数奇数判定すればよかった。まあ300点は取れたのでよしとする。

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

2012-02-24

SRM 533 Div2

02:29

Easy (250) PikachuEasy

問題

  • ぴかちゅーは ぴ か ちゅー しかしゃべれない。
  • 与えられた文字列がぴかちゅーが発音できるものかどうかを求める。

方針

Medium (500) CasketOfStarEasy

問題

  • 星の器は東方銀河のエネルギー生成装置である。
  • N個の器のそれぞれに星が格納されており、それぞれの重さが配列が与えられる。
  • エネルギーの生成は、位置xを選択することで行う。
  • 位置xの星を消滅させると、位置x-1と位置x+1の重さの積のエネルギーが得られる。
  • 得られる最大のエネルギーを求める。

方針

Hard (1000) MagicalGirl

問題

  • 魔法少女がN人の悪い魔女と戦う。
  • ライフの初期値はMで、毎日1ずつ減る。
  • 魔女はday[i]の日に出現する。
  • 魔女に勝つ確率はwin[i]%で、勝つとライフがgain[i]増える。
  • ただしライフの最大値はMである。
  • 魔法少女の生存日数の期待値を求める。

方針

結果

244.96 + 242.99 + 50*2 = 587.95 188th rating 1123 -> 1152

ナイスな問題。

easyは進めていくだけなのだけど、challenge phaseでJavaの人がreplaceAllしていたので、2撃墜した。ケースを事前に予測できてたらなおベターだと思った。easyは解くのより撃墜のほうが楽しいかも。文字列処理の典型的なミスり方は、(プロコン以外の)一般的なコーディングとしても参考になる。

mediumは順番を考慮する方法が思いつかなかったのでbitのメモ化再帰。div1easyの制約条件だと通らない。40分くらいかかってチャレンジなかったらレート下がるくらいの感じだった。easyが簡単かつ典型問題だと上位は厳しい。

hardはなんとなく解法を予想しただけ。残り時間がなかったのでmediumの見直しの時間に充てた。

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

2012-02-23

SRM 532 Div2

00:48

Easy (250) DengklekTryingToSleep

問題

  • アヒルにAからBまでの番号がついている。
  • 呼んだ番号が配列で与えられる。
  • 呼んでいないアヒルが何匹かを求める。

方針

Medium (600) DengklekMakingChains

問題

  • 布切れの状態を表す3文字が与えられる。
  • 文字はドットか数字である。
  • 数字の部分だけをつなげることができる。
  • 連続する数字の和の最大値を求める。

方針

Hard (950) DengklekPaintingSquares

問題

  • N×Mのタイルがある。
  • あるタイルに隣接するタイルの数が偶数になるように置く。
  • 置き方の総数を求める。

方針

結果

ox- 240.0+0=240.0 436th rating 1152 -> 1123

easyはソートして先頭と末尾から一発で求めればよいだけだった。

mediumは見直したのだけど落ちてしまった。submitしてからテストケースを作ればよかった。

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

2012-02-21

SRM 531 Div2

03:09

Easy (250) UnsortedSequence

問題

  • N個の配列がある。
  • 辞書順で、ソートされたものの次のものを求める。

方針

Medium (600) NoRepeatPlaylist

問題

  • N種類の曲がある。
  • P曲からなるプレイリストを作りたい。
  • 同じ曲は間隔Mだけ空ける必要がある。
  • 何通りのプレイリストが作れるかを求める。

方針

Hard (950) KingdomReorganization

問題

  • 未着手→復習
  • 王国にN個の都市があり、そのうちのいくつかは道路で結ばれている。
  • ある都市とある都市の道路を作るコストと壊すコストが与えられる。
  • 任意の都市間の経路を一つのみにするための最小のコストを求める。

方針

結果

239.06 204th rating 1133 -> 1152

easy、next_permutationは気づかなかった。そんなに時間かかってないのでまあいいやという感じ。

mediumが解けないのは困ったもんだ。解けないけどこれは良い問題。

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