$des$

将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。

请编写一个程序,读入堆数 nnn 及每堆的石子数,并进行如下计算:

  1. 选择一种合并石子的方案,使得做 n−1 次合并得分总和最大。
  2. 选择一种合并石子的方案,使得做 n−1 次合并得分总和最小。

$sol$

经典区间dp

$code$

#include <bits/stdc++.h>

using namespace std;

const int N = ;

int f[N][N], w[N], sum[N];
int n; int main() {
cin >> n;
for(int i = ; i <= n; i ++) {
cin >> w[i];
w[i + n] = w[i];
}
for(int i = ; i <= n * ; i ++) sum[i] = sum[i - ] + w[i];
for(int i = ; i <= n * ; i ++) for(int j = ; j <= n * ; j ++) f[i][j] = ( << );
for(int i = ; i <= n * ; i ++) f[i][i] = ;
for(int len = ; len <= n; len ++) {
for(int l = ; l + len - <= n * ; l ++) {
int r = l + len - ;
for(int k = l + ; k <= r; k ++) {
f[l][r] = min(f[l][r], f[l][k - ] + f[k][r]);
}
f[l][r] += sum[r] - sum[l - ];
}
}
int Answer = ( << );
for(int i = ; i <= n; i ++) Answer = min(Answer, f[i][i + n - ]);
cout << Answer << "\n";
for(int i = ; i <= n * ; i ++) for(int j = ; j <= n * ; j ++) f[i][j] = -;
for(int i = ; i <= n * ; i ++) f[i][i] = ;
for(int len = ; len <= n; len ++) {
for(int l = ; l + len - <= n * ; l ++) {
int r = l + len - ;
for(int k = l + ; k <= r; k ++) {
f[l][r] = max(f[l][r], f[l][k - ] + f[k][r]);
}
f[l][r] += sum[r] - sum[l - ];
}
}
Answer = -;
for(int i = ; i <= n; i ++) Answer = max(Answer, f[i][i + n - ]);
cout << Answer;
return ;
}

72: libreoj #10147 区间dp的更多相关文章

  1. 71: libreoj #10151 区间dp

    $des$ https://loj.ac/problem/10151 $sol$ 区间dp $f_{i, j}$ 表示区间 $[l, r]$ 合并的最大值 枚举中间点 $k$ $f_{i, j} =m ...

  2. 70: libreoj #2424 区间dp

    $des$ $sol$ $f_{i, j, k} => a => [1, i], b => [1, j], a_i = b_j | a_i != b_j , a_i => 0 ...

  3. Vijos p1002 过河 离散化距离+区间DP

    链接:https://vijos.org/p/1002 题意:一条长度为L(L <= 1e9)的桥上有N(1<= N <= 100)颗石头.桥的起点为0终点为L.一只青蛙从0开始跳, ...

  4. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  5. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  6. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  7. BZOJ1055: [HAOI2008]玩具取名[区间DP]

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1588  Solved: 925[Submit][Statu ...

  8. poj2955 Brackets (区间dp)

    题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...

  9. HDU5900 QSC and Master(区间DP + 最小费用最大流)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...

随机推荐

  1. C# vb .net实现焦距柔化特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距柔化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  2. el-select和el-cascader的visible-change下拉框隐藏时触发相关事件(下拉框下拉显示时不触发)

    原文:https://blog.csdn.net/CarryBest/article/details/79959389 今天做项目时,用elementUI框架,需要下拉框隐藏时出发某个函数,用了vis ...

  3. 2019 多益网络java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.多益网络等公司offer,岗位是Java后端开发,因为发展原因最终选择去了多益网络,入职一年时间了,也成为了面 ...

  4. 2019 小米java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.小米等公司offer,岗位是Java后端开发,因为发展原因最终选择去了小米,入职一年时间了,也成为了面试官,之 ...

  5. kali之HexorBase数据库破解

    HexorBase 用户名密码连接数据库 暴力破解 点击底栏 Bruteforces Databases Servers , 然后会弹出一个新界面 Databases Bruteforces 新界面  ...

  6. Assignment 2: UDP Pinger[课后作业]

    Computer Networking : A Top-Down Approach 的课后作业. 要求: 基于UDP协议,实现一个Pinger工具. 服务端代码已经提供了,自己实现客户端的代码. 完整 ...

  7. 【转载】 C#中float、double以及decimal类型有何不同

    在C#语言中,float.double以及decimal类型都可以用来表示小数,但三者还是有一定的不同,有效数字为相比的话,decimal类型的有效数字最大,float类型最小.计算浮点类型的运算,如 ...

  8. js节流与防抖函数封装

    js节流与防抖函数封装 常见应用场景: window的 resize 和 scroll 事件: 文字输入时的 keyup 事件: 元素拖拽.移动时的 mousemove 事件: 防抖 定义:多次触发事 ...

  9. springboot中modbus使用

    pom.xml配置: false true ias-snapshots Infinite Automation Snapshot Repository true false ias-releases ...

  10. EF 批量增删改 EntityFramework.Extensions

    EntityFramework.Extensions 1.官方网站  http://entityframework-extensions.net/ 2 破解版  Z.EntityFramework.E ...