D問題 Redistribution
気づき
- 制約が小さい()
- 長さが1のときは1通り
modを取りながらの除算(逆元)とコンビネーションは持っている前提とする。
公式解説はDPなので、ここでは単純に高校数学範囲のでやる。
項の和がとなる数列の長さをとする。
まずは数列の長さがどこまで大きくなれるか考えると、すべての項が3以上なので、配列の長さは最大でとなる。
次に、の長さを増やしていったとき何が起こるか考察する。
のとき、]の1通り。
のとき、それぞれの項が3以上は確定しているので、残りのをどう分配するかという問題になる。
これは「区別の出来ないボールが個、区別のできる箱が個あるとき、全てのボールを箱に入れる方法は何通りあるか?」という問題と考えることができる。
重複組合せと呼ばれるもので、仮に重複組合せという言葉を忘れていても、「ボールと仕切りの並び替え」を考えれば、組み合わせの応用で解くことができる。
以上より、と見ていき、それぞれについて重複組合せを求めて足し合わせれば良い。
よってについて、 を足し合わせることで解ける(のときも重複組合せはになるのでOK)(0通りの場合に注意)。
E問題 Dist Max
公式解説や検索して出てくる日本語解説はマンハッタン距離の45°回転やチェビシェフ距離など難しい。
嘘解法かもしれないけど、ACした方法を書いておく(追記:解説放送で似たような式変形の解説をしていた)。
気づき
- 絶対値をみたらmaxで分解してみる
公式解説もそうだが、絶対値をみたらmaxで分解してみるのは典型なのでやってみる。
ここで、この式をとみると、- A+B
- A+C
- B+C
- B+D
の四通りがあるから、
,でまとめて、
配列a,b,c,dを用意して、
任意のについてa,b,c,dそれぞれに、,,,をpushしてソートする。
上の4通りのうち 一番大きいモノ+一番大きいモノ が最大になるのは明らかなので、
が答え。