• 洛谷 1063 dp 区间dp


    #洛谷 1063 dp 区间dp 感觉做完这道提高组T1的题之后,受到了深深的碾压,,最近各种不在状态。。

    bzzt

    初看这道题,不难发现它具有区间可并性,即(i, j)的最大值可以由(i, k) 与 (k+1, j)得到。考虑使用区间dp

    题目中项链为环形,所以在2 * n的区间上进行操作

    设dp[i][j],表示区间(i, j) 的最大值 转移为

    dp[i][j] = max(dp[i][j], dp[i][k] + dp[k+1][j] + pre[i] * succ[k] * succ[j]);

    老久没写区间dp题目了,各种手生,开了3倍的空间,在枚举i的时候只枚举了一个n的区间,导致多次错解

    丑哭的代码如下:

    
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    const int maxn = 800 + 10;
    
    int dp[maxn][maxn];
    int pre[maxn], succ[maxn];
    int n;
    
    int main () {
        freopen("energy.in", "r", stdin);
        freopen("energy.out", "w", stdout);
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) {
            scanf("%d", &pre[i]);
            succ[i-1] = pre[i];
        }
        succ[n] = pre[1];
        memcpy(&pre[n + 1], &pre[1], sizeof(int) * n);
        memcpy(&succ[n + 1], &succ[1], sizeof(int) * n);
        memcpy(&pre[2 * n + 1], &pre[1], sizeof(int) * n);
        memcpy(&succ[2 * n + 1], &succ[1], sizeof(int) * n);
        // for (int i = 1; i <= 3 * n; i++) printf("pre[%d] = %d
    ", i, pre[i]);
        // for (int i = 1; i <= 3 * n; i++) printf("succ[%d] = %d
    ", i, succ[i]);
        for (int j = 1; j < n; j++) {
            for (int i = n + 1; i <= 3 * n; i++) {
                for (int k = i; k < i + j; k++) 
                    dp[i][i+j] = std :: max(dp[i][i+j], dp[i][k] + dp[k + 1][i + j] + pre[i] * succ[k] * succ[i + j]);
            }
        }
        //for (int i = n + 1; i <= 2 * n; i++)
        //    for (int j = i; j <= i + n - 1; j++) {
        //        printf("dp[%d][%d] = %d
    ", i, j, dp[i][j]);
           // }
        int ans = 0;
        for (int i = n + 1; i <= 3 * n; i++) {
            ans = std :: max(ans, dp[i][i + n - 1]);
        }
        printf("%d", ans);
    
        return 0;
    }
    
    
  • 相关阅读:
    git功能速查
    iPad actionsjeet
    iOS开发中集成Reveal
    【转】ios内联函数 inline
    【转】数据存储——APP 缓存数据线程安全问题探讨
    iOS 改变导航栏高度
    ios 闪屏页的设置
    AFNetworking content type not support
    iOS 获取本地文件的各种坑
    iOS UICollectionView 长按移动cell
  • 原文地址:https://www.cnblogs.com/CtsNevermore/p/6013983.html
Copyright © 2020-2023  润新知