2015年5月16日土曜日

ARC 39 B: 高橋幼稚園

問題

http://arc039.contest.atcoder.jp/tasks/arc039_b

解法

n<=kならなるべく均等に配れば良いので、n人にまずk/n個ずつ配ってその後残ったk%n個のアメをn人に配れば良いのでnC(k%n)通り

n>kならばどんなに頑張っても幸福度は0なのでどう配っても良い。この場合は
k個のアメにn-1個の「仕切り」を考えてそれの並べ方を考えれば良い。(仕切りiと仕切りi+1の間のアメの個数が子供iがもらうアメの個数となる)
ので、(k+n-1)!/k!/(n-1)! = (k+n-1)Ck 通りとなる。

ソースコード

https://gist.github.com/knewknowl/f275cbbf7cf65aa3b3ab

0 件のコメント:

コメントを投稿

行列積検算の乱択アルゴリズムと誤り訂正符号

行列積の検証で有名な乱択アルゴリズム (Freivaldsのアルゴリズム) のちょっとした変種が実はSchwartz-Zippelから正当性を直接示せて、とても教育的である、という話。あと、これを決定的にできるのか?について。   1. 行列積の検証とFreivaldsのアルゴリ...