1. 程式人生 > >660E Different Subsets For All Tuples (組合數學&DP)好題

660E Different Subsets For All Tuples (組合數學&DP)好題

考慮dp

dp[i][j]表示長度為i,以字元j結尾的答案是多少

dp[i][j]=sigma(dp[i-1][k]*2-dp[pre[j]-1][k])

然後這個玩意兒顯然對於任意的j的都是一樣的,而且pre[j]前面的每個位置都是可能的,這裡的dp是個字首和,所以直接扣除就可以了

那麼直接化簡為:dp[i]=dp[i-1]*(2m-1)

但是這個dp是沒有考慮空串的

那麼在加上空串就好了,所以答案就是

dp[i] = dp[i-1]*(2m-1)+m^(i-1)