zoukankan      html  css  js  c++  java
  • 洛谷P1880 石子合并

    经典水题.......

    断环为链长度乘二,求前缀和区间DP。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define int long long
     5 const int N = 210;
     6 
     7 int f[N][N], sum[N];
     8 
     9 main() {
    10     int n;
    11     scanf("%lld", &n);
    12     for(int i = 1; i <= n; i++) {
    13         scanf("%lld", &sum[i]);
    14         sum[n + i] = sum[i];
    15     }
    16     memset(f, 0x3f, sizeof(f));
    17     for(int i = 1; i <= n << 1; i++) {
    18         sum[i] += sum[i - 1];
    19         f[i][i] = 0;
    20     }
    21 
    22 
    23     for(int len = 2; len <= n; len++) {
    24         for(int l = 1; l + len - 1 <= n << 1; l++) {
    25             int r = l + len - 1;
    26             for(int k = l; k < r; k++) {
    27                 f[l][r] = std::min(f[l][r], f[l][k] + f[k + 1][r] + sum[r] - sum[l - 1]);
    28             }
    29         }
    30     }
    31 
    32     int ans = 0x3f3f3f3f3f3f3f3f;
    33     for(int i = 1; i <= n; i++) {
    34         ans = std::min(ans, f[i][i + n - 1]);
    35     }
    36     printf("%lld
    ", ans);
    37 
    38     memset(f, 0, sizeof(f));
    39     for(int len = 2; len <= n; len++) {
    40         for(int l = 1; l + len - 1 <= n << 1; l++) {
    41             int r = l + len - 1;
    42             for(int k = l; k < r; k++) {
    43                 f[l][r] = std::max(f[l][r], f[l][k] + f[k + 1][r] + sum[r] - sum[l - 1]);
    44             }
    45         }
    46     }
    47     ans = 0;
    48     for(int i = 1; i <= n; i++) {
    49         ans = std::max(ans, f[i][i + n - 1]);
    50     }
    51     printf("%lld", ans);
    52     return 0;
    53 }
    AC代码

    这里用了个define int long long的骚操作,不推荐,可能爆0。

  • 相关阅读:
    第四章 证券投资基金的监管
    第三章 证券投资基金类型
    第二章 证券投资基金概述
    第一章 金融、资产管理与投资基金
    第一章附录
    第1章 为什么研究货币、银行与金融市场
    最近值得珍惜的小事
    转_如何解决linux动态库版本控制
    爆裂鼓手
    修改jupyter notebook默认路径
  • 原文地址:https://www.cnblogs.com/huyufeifei/p/9600950.html
Copyright © 2011-2022 走看看