TopCoderOpen2010 Qual.1(再)
不出来だけどなんとか予選通過。うれしい><;;;
Result
214.55/401.01/Opened
186位 1601->1641
1000のシステムテストに不備があったらしくrejudgeが。
今回初参加で2位の日本人(?)の方は誰なんだろう。3問違う言語で解くなんてクレイジーすぎる。
Easy GirlsAndBoys
問題
男女が一列に並んでいる。このとき、隣り合う男女を入れ替えて、列において男女が隣り合っている数を最小にしたい。必要な入れ替え回数の最小値を求めよ。
Medium RobotSimulation
うーんちょっと今日はどうも頭の回転悪いなあ。
問題
無限に広い平面をロボットが与えられた文字列の命令を、与えられた繰り返し回数times回だけ実行して動く。
'U'は上、'D'は下、'L'は左、'R'は右に一歩移動することを意味する。
このとき、ロボットが通るマスの数を求めよ。命令の文字列の長さは10文字以下、timesは2億以下である。
試行錯誤
えーと、なんだこれ難しいな……
シミュレーションしちゃダメで……繰り返しでいくつ新しいマスを通るか数えればいいのかな?
あーでも繰り返しが何回目かによって新しく通るマスの数は変化する。
うーん。増えるマスってそのうち収束すんじゃない?とりあえず命令長10だと反例は思い浮かばない。
他の解法わかんないから、もう凄い嘘解法な気がするがこれで書いちゃえ。
Submit.(401.01)
Hard SequenceMerger
問題文なげえー
問題
与えられた数列の結びをソートした数列において、n(n≦10億)番目の項を求めよ。
数列の形式は以下の3つである。
- 等差数列 (初項・公差・項数が与えられる)
- 等比数列 (初項・公比・項数が与えられる)
- 例外 (各項が直接与えられる)
項数がnに満たない場合や、n番目の項が10億より大きい場合は-1を返せ。
試行錯誤
しばらく考える。nは10億まである。
……二分法?
とりあえず例外の数列だけ実装してみよう。がりがり。
Sample caseの0番だけ通った。。。うーん整数の二分法なんかよくわからない。項の値がだぶってる時の処理が間違ってるのかなあ。時間切れ。
Challenge
明らかに間違っている解答はない。ので自重しておこう。
チャレンジミスるとSystem Test落ちたときに予選落ちの可能性がw
というわけで0ミス0撃墜。
System test
Passed/Passed/-
あ、通った……