bouzuya.hatenablog.com

ぼうずやのにっき

アルゴリズムと数学 演習問題集 075 - Pyramid を解いた

アルゴリズムと数学 演習問題集 075 - Pyramid を解いた。

問題: https://atcoder.jp/contests/math-and-algorithm/tasks/math_and_algorithm_bi

例題。愚直に二重ループしてしまうと O(N^2)N <= 2 * 10^5 という制約なので間に合わない。何かしらの工夫が必要になる。昨日 (2022-03-07) と同じだ。

a b c d
a+b b+c c+d
a+2b+c b+2c+d
a+3b+3c+d

まず係数部分に注目する。ある数が何回足されるかはそこから一番上までの経路の数になる。ピラミッドは斜めなので分かりにくいが、右上への移動を上、左上への移動を左と考える。こう考えると下に並んだ各点から左上の点へ移動すると考えられる。上への移動はどれも N - 1 回で左への移動は左端なら 0 回で右端なら N - 1 (i 番目の点からは i - 1) 回だ。ここまで来れば 051 - Combination Hard (2022-02-23) と同じだ。 _{N-1}C_{i-1} (1 <= i <= N) で係数部分が求められる。

係数部分が求められればあとはそれぞれに A_i を掛ければ良い。

\sum_{i=1}^{N}{_{N-1}C_{i-1}A_i}O(N)

提出: https://atcoder.jp/contests/math-and-algorithm/submissions/29956619


今日のコミット。