30 August

DP 複習。git

參考 redbag 博客 提供的題表。github

P2858 [USACO06FEB] Treats for the Cows

區間 DP。code

轉換思路,題面從外往裏遞推,咱們採用從裏往外遞推,權值逐級遞減的反向實現方式。get

選擇區間左端點或右端點更新答案。博客

int n, a[2003], f[2003][2003];

int main() {
    scanf("%d", &n);
    for (int i=1; i<=n; ++i) scanf("%d", &a[i]), f[i][i]=a[i]*n;
    for (int k=1; k<n; ++k) for (int i=1; i+k<=n; ++i)
        f[i][i+k]=max(f[i+1][i+k] + a[i]*(n-k), f[i][i+k-1] + a[i+k]*(n-k));
    printf("%d\n", f[1][n]);
    return 0;
}

P2867 [USACO06NOV] Big Square

多重揹包。it

相關文章
相關標籤/搜索