71: libreoj #10151 区间dp
$des$

$sol$
区间dp
$f_{i, j}$ 表示区间 $[l, r]$ 合并的最大值
枚举中间点 $k$
$f_{i, j} =max(f_{i, j}, f_{i, k} + f_{k + 1, j} + (w_r + w_{l - 1}) \times w_k)$
对于方案的输出,$g_{i, j}$ 表示区间最优断点
bfs输出
#include <bits/stdc++.h>
const int N = ;
int f[N][N], g[N][N], w[N], n, sum[N];
int main() {
std:: cin >> n;
for(int i = ; i <= n; i ++) std:: cin >> 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 - , add = -;
for(int k = l; k < r; k ++) {
int now = f[l][k] + f[k + ][r] + (w[r] + w[l]) * w[k];
if(now > add) {
add = now, g[l][r] = k;
}
}
f[l][r] = add;
}
}
std:: cout << f[][n] << "\n";
static int Answer[N], js = ;
std:: queue < std:: pair<int, int> > Q;
Q.push(std:: make_pair(, n));
while(!Q.empty()) {
std:: pair <int, int> tp = Q.front();
Q.pop();
Answer[++ js] = g[tp.first][tp.second];
if(tp.first != g[tp.first][tp.second]) Q.push(std:: make_pair(tp.first, g[tp.first][tp.second]));
if(tp.second != g[tp.first][tp.second] + ) Q.push(std:: make_pair(g[tp.first][tp.second] + , tp.second));
}
for(int i = ; i <= js; i ++) std:: cout << Answer[i] << " ";
return ;
}
71: libreoj #10151 区间dp的更多相关文章
- 72: libreoj #10147 区间dp
$des$ 将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆.规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分. 请编写一个程序,读入堆数 nnn 及每堆的石子数 ...
- 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 ...
- 【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, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
随机推荐
- CentOS7 安装 Docker、最佳Docker学习文档
目录 一.Docker支持 二.安装Docker -1.在新主机上首次安装Docker CE之前,需要设置Docker存储库.之后,就可以从存储库安装和更新Docker. 0.卸载旧版 1.正式安装 ...
- ArcGIS Engine开发鹰眼图的功能(基础篇)
鹰眼是用于调节全视域范围内主地图显示范围情况的副地图.它体现了地图整体与详细局部的关系. 用户可以通过鼠标单击或者画框等动作实现鹰眼与主地图的交互情况. 鹰眼功能的原理是通过主地图窗口的地图控件和鹰眼 ...
- (转)微服务_.NET Core Consul服务发现与治理
原文地址:https://www.cnblogs.com/waynechan/p/9354909.html Consul官网:https://www.consul.io Consul下载地址:http ...
- Mock、Powermock使用汇总
背景 工作中经常用到单测,某对单测掌握的不好,所以趁此学习.总结一下. 主要参考:https://www.jianshu.com/p/0c2480b1709e.https://www.cnblogs. ...
- Telnet入侵Windows2000
开启Telnet 打开控制面板,管理工具 计算机管理 连接刚刚探测到的主机 输入探测到的主机IP 如下图所示,连接成功 找到Telnet服务 启动Telnet服务 远程登录 注意 Telnet登录需要 ...
- misc_register杂项设备
include/linux/miscdevice.h 这些字符设备不符合预先确定的字符设备范畴 设备主设备号10 struct miscdevice { int minor; //次设备号(如果设置为 ...
- 如何使用Prometheus采集SAP ABAP Netweaver的应用日志数据
Prometheus是一套开源的系统监控报警框架.它启发于Google的borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发 ...
- WPF弹出进度条
环境:vs2015 ,.net 4.6 源码地址:https://pan.baidu.com/s/1FoujUMst1luomPf0ZfCLUQ 提取码:trzj 说明: 1.进度条是在winFrom ...
- cookie登录及其保存
requests中request携带cookie请求1 将一个Session实例的cookies属性设置赋值成 一个 CookieJar 实例 import http.cookiejar s = re ...
- 8 个 Python 实用脚本,赶紧收藏备用!
脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作. 例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么.完成这 ...