TopCoder SRM 673 (Div. 1) Easy. BearCavalry
問題概要
配列とが与えられ、の要素との要素をペアにしていく。 のペアをとするとき、になるような割り当ての方法は何通りあるか。
解法
とペアになる要素を先に決めておく。ペアの積をとしたとき、残りの配列でペアの積が未満になるような割り当て方が何通りあるかを数え上げていこう。
とペアの数をとから除外し、を降順に、を昇順にソートする。
(注意:ここから添字が1-indexedに変わります)
との積が未満であるような最大のの位置をとすると、の割り当て方は通り。
を更新する。なのでは増える、あるいは変化しない。個のうち1個使われてしまっているのでの割り当て方は通り。
を更新する。個のうち2個使われてしまっているのでの割り当て方は通り。
これを繰り返していけば何通りかを求めることができる。
TopCoder SRM 673 (Div. 1) Easy. BearCavalry
感想
2回resubmitするとスコアが残酷なことになるという知見を得た。割りと早く解いていただけに微妙なミスに気づけなかったのは悲しい。