Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp
生活随笔
收集整理的這篇文章主要介紹了
Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳送門
文章目錄
- 題意:
- 思路:
題意:
給你n,mn,mn,m,讓你構造兩個數組a,ba,ba,b滿足:1<=ai,bi<=n1<=a_i,b_i<=n1<=ai?,bi?<=n,len=mlen=mlen=m,ai<=bia_i<=b_iai?<=bi?,aaa是非遞減的,bbb是非遞增的。求能夠造出多少個這樣的數組。
思路:
可以發現,由于ai<=bia_i<=b_iai?<=bi?,aaa是非遞減的,bbb是非遞增的,所以兩個數組只需要an<=bna_n<=b_nan?<=bn?即可。所以我們用dpdpdp求出a,ba,ba,b以某個數iii結尾的方案,讓后a[m][i]?b[m][j]a[m][i]*b[m][j]a[m][i]?b[m][j]組合起來就行了。
所以我們定義f[i][j]f[i][j]f[i][j]表示到了第iii個位置,當前數為jjj的方案數,所以aaa數組轉移就是f[i][j]=∑k=1jf[i?1][k]f[i][j]=\sum _{k=1} ^j f[i-1][k]f[i][j]=k=1∑j?f[i?1][k]
bbb數組直接倒過來就行了。
最后答案即為a[m][i]?b[m][j]a[m][i]*b[m][j]a[m][i]?b[m][j]。
總結
以上是生活随笔為你收集整理的Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces Round #61
- 下一篇: Educational Codeforc