2019年8月7日水曜日

yukicoder No.269 見栄っ張りの募金活動

yukicoder No.269 見栄っ張りの募金活動

最初にSSから0+K+...+(N1)K=N(N1)K/20+K+...+(N-1)K = N(N-1)K/2を引いておくと、1つ前の生徒の金額以上に寄付をするという問題に変わる。定式化すると、総和がSN(N1)K/2S-N(N-1)K/2になるような長さNNの数列で、単調非減少であるものを数え上げればよいことになる。これは分割数、つまり非負整数SN(N1)K/2S-N(N-1)K/2NN個の非負整数に分割する方法を数え上げることに等しい。1 O(SN){\mathcal O}(SN)


  1. S<N(N1)K/2S < N(N-1)K/2の場合の答えは00である。 ↩︎