動機
- codeforcesでこの問題が解けなかった
- https://codeforces.com/contest/1201/problem/B
- 内容:数列Anからどれか2つを選んで-1することを繰り返し、数列を全ゼロにできるか
- i != j
- 解答は、max x 2 > sum のときNo, それ以外でYes
- maxが飛び抜けちゃうとダメということ
一般化
- これを一般化したのが下のmisteerの記事 & 熨斗袋さんの証明
- 絵で描くとこういうことだろう
参考
https://misteer.hatenablog.com/entry/stone-cleaner
これちょっと前に上手い解法を思い付いたのです
— 熨斗袋 (@noshi91) August 4, 2019
全ての石を円環状に並べます (同じ皿の石は連続区間になるように)
そして mod (sum(a)/k) で等しい位置にある石をまとめて取る
すると同じ皿の石は絶対に取らない、何故なら最大値がsum(a)/k以下なので https://t.co/bMgwGMDiD2