GCJ 2011 Qualification Round

通過した。

A. Bot Trust

通った。


シミュレーションするだけ。
B,Oどちらも次に行くところ目指して動き続けていればいい。

B. Magicka

通った。


一文字ずつ取り出してもしinvokeできればその文字に置き換える。invokeできず、opposeな文字が出てきたら今までの文字は「全部」消去。

C. Candy Splitting

通った。


Patrickの足し算はXORの計算なので、2つに分けたときに同じ値になるってことは、全部足して0になるならば2つに分けられる。
全部XORして0になるということは、「一番小さな数字」と「それ以外の数字のXOR」はXORを取って0、すなわち、最大のvalueは「それ以外の数字の和」。

D. GoroSort

提出してない。


「2 1」の時は、「2 1」の場合と「1 2」の場合があり得るから、「2 1」の揃うために台バンする回数をxにすると、x=(1/2)*1+(1/2)*(x+1)なので、x=2。「2 3 1」がそろうためには、「3 2 1」...「1 2 3」まである。もう揃っているところを抑えてシャッフルしなおすようにしながら台バンすることを考えると、x=3。4の時もなるみたいだけど、サンプルで「2 1 4 3」は左右を止めて2+2=4という説明になってる。。抑えられない部分の数だけ台バンすればいいような感じではあるけど、証明できない。。。寝。。。
ということで、いいところまでいってたみたいだけど、解けなかった。

反省

ダラダラやりすぎ。問題の読解が遅い。要点以外の部分を飛ばして読めるようになりたい。
一応、ABCを通して通過。