解答:Submission #15893522 - AtCoder Beginner Contest 130
解法:dp[i][j] : sのi番目、tのj番目を最後に使うときの共通部分列の個数(空集合は除く)、
sm[i][j]:dpの二次元累積和 とすると、s[i] == t[j]の場合にdp[i+1][j+1] = sm[i][j] + 1と遷移させるとうまくいく。
(これまで作られていた部分列(個数sm[i][j])の後ろにs[i]を追加する + s[i]自身)
smは、sm[i+1][j+1] = sm[i][j+1] + sm[i+1][j] - sm[i][j] + dp[i+1][j+1] と遷移させる。