http://ipsc.ksp.sk/contests/ipsc2012/results/
とさんと参加.238位/600超.自分が解いたのはB1, B2, I1(?)だけ.
I1はググるだけ. 出てきたのが全部salt+5文字だったので, 5文字のしか無いと思ってI2探索しても, 全然出てこず死亡.
B1はなんか投げまくってエラーから推測するゲー的なやつ.
何も書いてないやつ投げる→sp区切りの正整数
100までの素数投げる→合計123456789
1 123456788→6個以上
適当に合計123456789にしたやつ投げる→a_0 < a_1
ソートして投げる→a_0 が a_1 を割り切る.
2進で分解して投げる→AC
で+5. +1のチームあって頭おかしいと思ってたら, 消えてるのね. +2なら, 和の制約と割り切る制約だけで行けそう. 色々と余計だった気がする.
B2は, 一つ投げる→6桁整数, 投げる→badnessとかいうのが出てくる→桁毎の差の絶対値の和っぽいかなーとか思う→555555投げる→なんか帰ってくる→osa_kが二乗誤差じゃね?と言ってくれる→あとは探索するだけ.
def match(a, b) res = 0 6.times do res += ((a%10) - (b%10))**2 a /= 10 b /= 10 end res end arr = [ [583283, 32], [555555, 27], [344176, 54], [372542, 50], ] ok = [] for n in 0..999999 for i in 0...arr.size a = n b = arr[i].first m = match(n, arr[i].first) break unless arr[i].last == m ok.push n if i == arr.size - 1 end end p ok
と
def match(a, b) res = 0 6.times do res += ((a%10) - (b%10))**2 a /= 10 b /= 10 end res end a = [285552, 372542, 464793, 485332, 554450, 578472, 681556, 774696, 794346, 974476] min = 9999 for x in a hoge = a.group_by{|y|match(x,y)}.each_value.max_by{|b|b.size}.size if min > hoge p x min = hoge end end p min
とかやって, 適当に次の手を探索してた. 最良じゃないけどまぁいいか的な. Hit and Blowを思い出しつつやってた.
感想:
自明な感じのやるだけ問題しか解けず, 全然チームの役に立っていなかったのである. クズい.
tokoharuさんとかH手動でACっててぱなかった.