Hatena::Grouptopcoder

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

 | 

2012-06-05IPSC2012

[]IPSC2012 16:39

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っててぱなかった.

ゲスト



トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/Mi_Sawa/20120605
 |