はまやんはまやんはまやん

hamayanhamayan's blog

競技プログラミングにおける挿入DP問題まとめ

挿入DP

  • 順列などに挿入することで遷移を進めていくDP

挿入DPとは逆に抜いていくDP(抜去DP)

【発展的話題】挿入DPの更新最適化

挿入DPの時に掛け算を遅延評価して、上手くやる

rep(i, 0, N) rep(k, 0, N) rep(col, 0, N) {
    dp[i + 1][k][col] = dp[i][k][col] * (k + 1);
    if(c[i] == col) dp[i + 1][k][c[i]] += dp[i][k][col];
    else dp[i + 1][k + 1][c[i]];
}

を掛け算を遅延評価することでO(N^3)からO(N^2)へ削減可能