72: libreoj #10147 区间dp
$des$
将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。
请编写一个程序,读入堆数 nnn 及每堆的石子数,并进行如下计算:
- 选择一种合并石子的方案,使得做 n−1 次合并得分总和最大。
- 选择一种合并石子的方案,使得做 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的更多相关文章
- 71: libreoj #10151 区间dp
$des$ https://loj.ac/problem/10151 $sol$ 区间dp $f_{i, j}$ 表示区间 $[l, r]$ 合并的最大值 枚举中间点 $k$ $f_{i, j} =m ...
- 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 ...
- Vijos p1002 过河 离散化距离+区间DP
链接:https://vijos.org/p/1002 题意:一条长度为L(L <= 1e9)的桥上有N(1<= N <= 100)颗石头.桥的起点为0终点为L.一只青蛙从0开始跳, ...
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
随机推荐
- chrome Network 过滤和高级过滤
转自:https://blog.csdn.net/tengdazhang770960436/article/details/90644523
- Java线程本地存储ThreadLocal
前言 ThreadLocal 是一种 无同步 的线程安全实现 体现了 Thread-Specific Storage 模式:即使只有一个入口,内部也会为每个线程分配特有的存储空间,线程间 没有共享资源 ...
- node-red inject节点 debug节点 switch节点
inject节点: https://blog.csdn.net/geek_monkey/article/details/80737818 debug节点: https://blog.csdn.net/ ...
- @PropertySouce注解 读取 properties文件
https://www.cnblogs.com/whx7762/p/7885735.html 1.@ProtertySource @PropertySouce是spring3.1开始引入的基于java ...
- Fluentdata详解
Fluentdata 轻型orm 仅仅一个cs文件 创建并且初始化一个IDbContext. 二选一 public IDbContext Context() { return new DbContex ...
- angular复习笔记4-模板
Angular复习笔记4-模板 简介 模板是一种自定义的标准化页面,通过模板和模板中的数据结合,可以生成各种各样的网页.在Angular中,模板的默认语言是HTML,几乎所有的HTML语法在模板中都是 ...
- onActivityResult方法的使用
转发自:https://blog.csdn.net/hacker_crazy/article/details/78345450 在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回 ...
- 拓展 - WebRTC 多视频网络拓扑之三种架构
众所周知,WebRTC非常适合点对点(即一对一)的音视频会话.然而,当我们的客户要求超越一对一,即一对多.多对一设置多对多的解决方案或者服务,那么问题就来了:“我们应该采用什么样的架构?” .简单的呢 ...
- JavaScript_proto_和prototype到底是什么玩意
_proto_和prototype到底有什么区别啊?是个什么东西啊? 在这里我头也比较大啊,小学语文没学好,所以组织能力比较差劲,所以尽量的咱用代码来解释吧. function too() { thi ...
- Django:实现读写分离
库的配置 1.读写分离 settings配置 #settings.py 配置库信息,生成2个库 DATABASES = { 'default': { 'ENGINE': 'django.db.back ...