Codeforces#334 Div.2 AとB やった
A Uncowed Forces
やるだけ系問題。
問題文に書いてある数式を python でかく
250でわるところだけ一応気をつける
M = map(int, raw_input().split()) W = map(int, raw_input().split()) hs, hu = map(int, raw_input().split()) X = [500, 1000, 1500, 2000, 2500] score = 0 for i in xrange(5): score += max(0.3*X[i], ( (1-(M[i]/250.0)) * X[i] - 50 * W[i] ) ) score += hs*100 score -= hu*50 print int(score)
B More Cowbell
n個の大きさの異なるカウベルを k個の同じ大きさの箱に収納する。箱の大きさがカウベルの大きさ(の和)より大きい場合でも、箱に入るカウベルは最大2個。
箱の大きさの最小値を求める。
- k個の箱を用意します
- 大きい方からとりあえず1個ずつ配っていきます
- 余ったのは逆順に入れていきます(全体のmaxが大きくならないように)
- 2つ入れた箱は和を出してから、全部の max を取ります
n, k = map(int, raw_input().split()) # 4 3 S = map(int, raw_input().split()) # 2 3 5 9 cases = [[] for _ in xrange(k)] # [ [], [], [] ] for i in xrange(k): cases[i].append(S.pop()) #[ [9], [5], [3] ] cases.reverse() # [ [3], [5], [9] ] for i in xrange(len(S)): cases[i].append(S.pop()) # [ [3, 2], [5], [9] ] cases = map(lambda x: sum(x), cases) # [ [5], [5], [9] ] print max(cases) # 9
n < k の場合を考えてなかったので、ランタイムエラーで無事死亡(朝起きてから気付く)
if n <= k: print max(S) else:
を足せばACだった。無念
寝てるあいだに気付いた
大きさ 0 のカウベルを (2k-n) 個持ってきて、2k個のカウベルを2こずつ入れると考えると、大きいのと小さいのをペアにしていけばいいのでシンプルだった。
n, k = map(int, raw_input().split()) #4 3 S = map(int, raw_input().split()) # 2 3 5 9 S = [0] * max(0, 2*k-n) + S # 0 0 2 3 5 9 max_weight = -1 for i in xrange(len(S)/2): weight = S[i] + S[-i-1] # 0+9, 0+5, 2+3 max_weight = max(max_weight, weight) print max_weight
C
よくわからなかったので Editorial 見て考えます
Rating
1408 (-6)
やめて弱者をいじめないで