zoukankan      html  css  js  c++  java
  • 洛谷 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;
    }
    
    
  • 相关阅读:
    常用的虚拟化产品
    KVM虚拟化
    Jenkins流水线项目发布流程
    Jenkins安装,界面说明
    敏捷估算与规划—总结
    敏捷估算与规划—跟踪与交流
    敏捷估算与规划—进度安排
    敏捷估算与规划—为价值做规划
    敏捷估算与规划—问题与目标
    用户故事与敏捷方法笔记 --- 估算与计划
  • 原文地址:https://www.cnblogs.com/CtsNevermore/p/6013983.html
Copyright © 2011-2022 走看看