りにゅうしょく

競技プログラミング 日常

Codeforces Round #683(Div. 2) 参加記

https://codeforces.com/contest/1447
A、B、Cの3完でした。Dは難しそうなふんいき……。

A. Add Candies

サンプルがちょっと不親切というかひっかけ?だけど、1, 2, 3, ..., N個キャンディがあるときは、i番目にiの袋を選んでそれ以外にiずつ足せば、必ずN回ですべての袋が等しくなる(1つの袋に1+2+3+...+N個入る)

B. Numbers Box

位置は関係なく、負の数の個数が偶数の場合は、うまくこねくり回すことで全部正の数にできる。負の数の個数が奇数かつ0が1つもない場合は必ずどれか1つが奇数になってしまうので、1番絶対値が小さい値を負の数にする。

C Knapsack

⌈\frac{W}{2}⌉ ≤ w ≤ Ww_iがあったらそれを出力して終わり。ない場合、⌈\frac{W}{2}⌉未満の数字だけ添え字と一緒にpairの配列としてとっておいてソート。i番目までの合計が⌈\frac{W}{2}⌉未満の場合、i+1番目の数字は必ず⌈\frac{W}{2}⌉未満なので、i+1番目を足してもWを超えることはない。前から足していって⌈\frac{W}{2}⌉以上になった時点で出力。

ABCの後に出たけどあんまり疲労感がなかった。昼寝のおかげかも?