TopCoderOpen2010 Qual.1(再)

不出来だけどなんとか予選通過。うれしい><;;;

Result

214.55/401.01/Opened
186位 1601->1641


1000のシステムテストに不備があったらしくrejudgeが。
今回初参加で2位の日本人(?)の方は誰なんだろう。3問違う言語で解くなんてクレイジーすぎる。

Easy GirlsAndBoys

問題

男女が一列に並んでいる。このとき、隣り合う男女を入れ替えて、列において男女が隣り合っている数を最小にしたい。必要な入れ替え回数の最小値を求めよ。

試行錯誤

えーとなんだこれ。要するにソーティングすればいいのだろうか。バブルソートで。
昇順と降順に並べる必要があって、えーと???


ちょっと混乱してはまる。頭わるい。Submit.(214.55)

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/-
あ、通った……