Codeforces Round #655 (Div. 2) E. Omkar and Last Floor 区间dp + 巧妙的状态设计
傳送門
題意:
思路: 按照貪心的思路來考慮的話,顯然是每一列111的個(gè)數(shù)越多越好,所以我們能放到一列就放到一列。設(shè)f[l][r]f[l][r]f[l][r]為在[l,r][l,r][l,r]內(nèi),區(qū)間全部都在里面的貢獻(xiàn)。顯然這個(gè)貢獻(xiàn)就是全部落在[l,r][l,r][l,r]內(nèi)區(qū)間的個(gè)數(shù)平方。假設(shè)當(dāng)前點(diǎn)為k(l<=k<=r)k(l<=k<=r)k(l<=k<=r),那么f[l][r]=max(f[l][r],f[l][k?1]+f[k+1][r]+S[l][r][k])f[l][r]=max(f[l][r],f[l][k-1]+f[k+1][r]+S[l][r][k])f[l][r]=max(f[l][r],f[l][k?1]+f[k+1][r]+S[l][r][k])其中S[l][r][k]S[l][r][k]S[l][r][k]表示經(jīng)過第kkk列,左右端點(diǎn)在[l,r][l,r][l,r]內(nèi)的個(gè)數(shù)。這個(gè)式子顯然可以用區(qū)間dp來求解。因?yàn)槲覀兌x的f[l][r]f[l][r]f[l][r]為區(qū)間全部落在[l,r][l,r][l,r]這個(gè)區(qū)間內(nèi),我們枚舉kkk,將區(qū)間經(jīng)過kkk的區(qū)間都加到sumsumsum里,再分成[l,k?1],[k+1,r][l,k-1],[k+1,r][l,k?1],[k+1,r]的子問題的時(shí)候,這兩部分已經(jīng)計(jì)算過的值中一定不含經(jīng)過kkk的區(qū)間因?yàn)樗麄儼氖亲笥叶它c(diǎn)全都在[l,k?1],[k+1,r][l,k-1],[k+1,r][l,k?1],[k+1,r]中的區(qū)間貢獻(xiàn),可以合并。
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #655 (Div. 2) E. Omkar and Last Floor 区间dp + 巧妙的状态设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: li标签怎么设置滑动(li标签左浮动)
- 下一篇: Codeforces Round #70