Hatena::Grouptopcoder

れんしゅうちょう。 このページをアンテナに追加 RSSフィード

 | 

2011-05-09Google Code Jam 2011 Qualification Round

Problem B. Magicka 23:32

問題

一瞬まどまぎかと思ったのは自分だけでは無いハズ。

問題を理解するのに異常に手間取った。

Aを解けずにBに来たので、泣きそうになった。

英語だと、三文くらい読むと前に書いてあった事を忘れるので、

与えられるのがelement listではなくて、与えられたのを生成してelement listに入れていくという事を忘れていた。

どういう順番でcombine、opposedしていくのか解らず、sampleの#3が解らないという状況に。

何回か書いてアレー?となって、頭を冷やす為にCへ行って、D→Aを経て戻ってくる。

結局ただ左から順にpushして処理すればいいだけだという事に気付き、なんとか書いて提出。

smallでWAをもらい、何か直して提出。smallでACってそのままlargeも投げた。

input = gets.split(" ")
comb = []
opp = []
inv = ""
input.shift.to_i.times do
    comb.push input.shift
end
input.shift.to_i.times do
    opp.push input.shift
end
comb.map!{|a|[a,[a[1],a[0],a[2]].join]}.flatten!
opp.map!{|a|[a,[a[1],a[0]].join]}.flatten!
inv = input.shift.split("") unless input.shift.to_i.zero?
res = []
until inv.empty?
    res.push inv.shift
    unless res.size < 2
        i = comb.index{|x|x[0..1]==res[-2..-1].join("")}
        unless i.nil?
            res.pop
            res.pop
            res.push comb[i][2]
            next
        end
        res = [] if opp.any?{|x|x[1]==res[-1] && res.any?{|y|y==x[0]}}
    end
end
"["+res.join(", ")+"]"

combもoppも、順不同なので、最初から両方の順番を突っ込んでおくと楽。

ex:"QFT"→"QFT","FQT"

kerlonkerlon2011/05/09 23:43まずAのときに、何これークリックしてみよー^q^ → 1 wrong try
次にBに、「出来た(キリッ」 → アウトプット作り忘れてて 1 wrong try

Mi_SawaMi_Sawa2011/05/09 23:45>kerlonさん
まぁ慣れる意味も含めてのQRだろうし、この先やらかさなきゃいいんじゃないかなw

 |