Educational Codeforces Round 108 (Rated for Div. 2) D. Maximum Sum of Products 思维 + dp
傳送門(mén)
文章目錄
- 題意:
- 思路:
題意:
給你兩個(gè)長(zhǎng)度為nnn的數(shù)組a,ba,ba,b,你可以至多反轉(zhuǎn)一段連續(xù)區(qū)間,求∑i=1nai?bi\sum _{i=1}^n a_i*b_i∑i=1n?ai??bi?最大是多少。
n<=5e3n<=5e3n<=5e3
思路:
首先我們可以通過(guò)n2n^2n2來(lái)枚舉所有的區(qū)間,但是要計(jì)算翻轉(zhuǎn)之后的貢獻(xiàn)的話還需要多加一個(gè)nnn,這樣復(fù)雜度是n3n^3n3,顯然不可接受。
考慮能否通過(guò)小區(qū)間來(lái)遞推出大區(qū)間。
定義f[i][j]f[i][j]f[i][j]為將[i,j][i,j][i,j]段區(qū)間翻轉(zhuǎn)之后變換的值,我們發(fā)現(xiàn)如果我們知道一個(gè)小區(qū)間[l,r][l,r][l,r],那么[l?1,r+1][l-1,r+1][l?1,r+1]的區(qū)間貢獻(xiàn)就是在[l,r][l,r][l,r]的貢獻(xiàn)基礎(chǔ)上再將l?1,r+1l-1,r+1l?1,r+1兩個(gè)位置的值互換了一下,互換兩個(gè)值l,rl,rl,r對(duì)答案的貢獻(xiàn)為a[l]?b[l]+a[r]?b[r]+a[l]?b[r]+a[r]?b[l]=a[l]?(b[r]?b[l])+a[r]?(b[l]?b[r])a[l]*b[l]+a[r]*b[r] +a[l]*b[r]+a[r]*b[l]=a[l]*(b[r]-b[l])+a[r]*(b[l]-b[r])a[l]?b[l]+a[r]?b[r]+a[l]?b[r]+a[r]?b[l]=a[l]?(b[r]?b[l])+a[r]?(b[l]?b[r]),所以我們可以通過(guò)[l,r][l,r][l,r]擴(kuò)展到[l?1,r+1][l-1,r+1][l?1,r+1],所以轉(zhuǎn)移方程為f[l][r]=f[l?1][r+1]+(a[l]?a[r])?(b[r]?b[l])f[l][r]=f[l-1][r+1]+(a[l]-a[r])*(b[r]-b[l])f[l][r]=f[l?1][r+1]+(a[l]?a[r])?(b[r]?b[l])
復(fù)雜度O(N2)O(N^2)O(N2)
總結(jié)
以上是生活随笔為你收集整理的Educational Codeforces Round 108 (Rated for Div. 2) D. Maximum Sum of Products 思维 + dp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 硫酸铜溶液化学式 硫酸铜溶液化学式是Cu
- 下一篇: 智能电视如何成功连接悟空助手