題目描述:
求所有(0,0)走到(n,m)路線(k^矩形個數)
分析:
考慮如果只是求方案數的話
很簡單乙個遞推dp[i,j]=dp[i-1,j]+dp[i,j-1];
也是乙個組合數c(n+m,n)
再考慮把面積加上進行遞推
重新定義dp[i,j]:走到(i,j)之前所有方案的k矩形個數和
如果我們考慮每次豎著看一列矩形的面積時:
dp[i,j]=dp[i,j-1]×kj+dp[i-1,j]
如果我們考慮每次橫著看一排矩形的面積時:
dp[i,j]=dp[i,j-1]+dp[i-1,j]×ki
考慮將兩個式子進行合併
令j=j-1(轉化為dp[i,j]這樣的形式)
同理dp[i-1,j+1]×(kj+2-1)=dp[i-2,j+2]×(ki-1-1)
最後一定會到達終止邊界dp[0,i+j]=1
所以dp[i,j]=(ki-1)×(ki-1-1)×....(k1-1)/(kj-1)×(kj+1-1)×.....×(kj+i-1-1)
這樣直接線性遞推就好
因為只用交答案,慢點也無所謂
動態規劃訓練之十七
今天的考試題目中有單調佇列優化dp的,感覺不太熟練,所以練幾手題 其實這題就是今天的t2!首先是dp很明確 dp i,0 表示處理了前i個位置,並且第i個位置不選的最大值 dp i,1 表示處理了前i個位置,並且第i個位置要選的最大值 明顯dp i,0 max dp i 1,0 dp i 1,1 d...
動態規劃訓練之十九
題目大意 o n 求出乙個序列的本質不同的子串行個數 考慮動態規劃 dp i 表示前i位子序列的個數 很顯然如果沒有本質不同的話,子串行個數等同於子集的個數就是2n 1 但關鍵就在於這個本質不同?怎麼辦?當然考慮容斥 記vis a i 表示上一次a i 出現的位置 只要dp的時候減掉dp vis a...
動態規劃訓練之九
首先能夠想到是狀壓dp模板 取dp state,i,j 表示state狀態下倒數第二個島為i,最後乙個島為j時的最優解,num state,i,j 為相應的路徑數目,其中state的二進位制表示的i位為1表示島i被訪問過,反之為0。則顯然當有邊 i,j 存在時,有如下初值可賦 dp 1,表示此時可以...