洛谷 1063 dp 区间dp
#洛谷 1063 dp 区间dp
感觉做完这道提高组T1的题之后,受到了深深的碾压,,最近各种不在状态。。

初看这道题,不难发现它具有区间可并性,即(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\n", i, pre[i]);
// for (int i = 1; i <= 3 * n; i++) printf("succ[%d] = %d\n", 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\n", 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;
}
洛谷 1063 dp 区间dp的更多相关文章
- 洛谷P3205合唱队——区间DP
题目:https://www.luogu.org/problemnew/show/P3205 枚举点,分类为上一个区间的左端点或右端点,满足条件便+=即可: 注意不要重复(当l=2时). 代码如下: ...
- 洛谷1220(区间dp)
要点 处于什么位置的题常用一个套路就是搞完\([l,r]\)以后处于0(l)或1(r)的状态,即\(dp[i][j][0/1]\). 对于此题dp意义为已经搞完\([l,r]\)的时最小的已耗电能,转 ...
- BZOJ5259/洛谷P4747: [Cerc2017]区间
BZOJ5259/洛谷P4747: [Cerc2017]区间 2019.8.5 [HZOI]NOIP模拟测试13 C.优美序列 思维好题,然而当成NOIP模拟题↑真的好吗... 洛谷和BZOJ都有,就 ...
- 洛谷P1712 [NOI2016]区间 尺取法+线段树+离散化
洛谷P1712 [NOI2016]区间 noi2016第一题(大概是签到题吧,可我还是不会) 链接在这里 题面可以看链接: 先看题意 这么大的l,r,先来个离散化 很容易,我们可以想到一个结论 假设一 ...
- 洛谷1063 +区间dp(经典问题)
题目网址:https://www.luogu.com.cn/problem/P1063 题意大致是:给定一个序列An,第i个元组表示为(Ai,Ai+1),序列位置不变,当合并一个区间[l,l+1]时开 ...
- 洛谷P3928 Sequence2(dp,线段树)
题目链接: 洛谷 题目大意在描述底下有.此处不赘述. 明显是个类似于LIS的dp. 令 $dp[i][j]$ 表示: $j=1$ 时表示已经处理了 $i$ 个数,上一个选的数来自序列 $A[0]$ 的 ...
- 洛谷 P2657 (数位DP)
### 洛谷 P2657 题目链接 ### 题目大意:给你一个数的范围 [A,B] ,问你这段区间内,有几个数满足如下条件: 1.两个相邻数位上的数的差值至少为 2 . 2.不包含前导零. 很简单的数 ...
- 洛谷 P4124 (数位 DP)
### 洛谷 P4124 题目链接 ### 题目大意: 给你一段区间,让你求满足下列两个条件时的数的个数. 1.至少有 3 个相邻相同数字 (即 111 .1111 .222 等) 2.不能同时出现 ...
- 洛谷 P4999(数位DP)
###洛谷 P4999 题目链接 ### 题目大意:给你一个区间,求这段区间中所有数的,数位上的,数字之和. 分析: 这题与 洛谷 P2602 相似,稍微改一下就可以了. 求出 0 ~ 9 的个数,然 ...
随机推荐
- 警告: The APR based Apache Tomcat Native library failed to load.
警告: The APR based Apache Tomcat Native library failed to load. The error reported was [C:\apache-tom ...
- C#中的LINQ 基础
1.LINQ的数据源 必须可枚举的,即必须是数组或者集合 (继承了IEnumerable<T>接口就可以,注意是IEnumerable<T>,不是IEnumerable接口,不 ...
- idea常用方便的快捷键
Ctrl+D 复制行Ctrl+F 查找文本Ctrl+G 定位到某行Ctrl+H 显示类结构图(类的继承层次)Ctrl+I 实现方法ctrl+J 显示所有快捷键模板ctrl+k 提交代码到SVNCrtl ...
- [SharePoint][SharePoint Designer 入门经典]Chapter11 工作流基础
1.SPS中可以创建的工作流的种类 2.SPD工作流基础 3.创建列表\库工作流 4.创建可重用的工作流 5.利用基于站点的工作流 6.SPD 工作流的限制和注意事项
- iOS-UIImageView载入网络下载的图片(异步+多线程)
最原始的载入网络下载的图片方式: //最原始载入网络图片方法,相当堵塞主线程,界面卡顿 -(void)setImageWithURL:(NSString *)imageDownloadUrl{ UII ...
- UESTC--1263--The Desire of Asuna(贪心)
The Desire of Asuna Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu Su ...
- DB-MySQL:MySQL 事务
ylbtech-DB-MySQL:MySQL 事务 1.返回顶部 1. MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人 ...
- wamp openssl
在这一章节里, 我记录了一下如何在 wamp 环境下配置 ssl 前提条件 在设置 Apache + SSL 之前, 需要确认 Apache 已经安装并可以正常工作. 并且 ssl 需要的文件在如下的 ...
- CSS中alt和title属性的正确使用
1.在<img>标签中的使用 alt:全称为alttext,实质是当图片无法正确显示时用于替换(在IE下同时起到了title的作用,即鼠标滑过时文字提示): title:鼠标经过时文字提示 ...
- 12.Matlab神经网络工具箱
概述: 1 人工神经网络介绍 2 人工神经元 3 MATLAB神经网络工具箱 4 感知器神经网络 5 感知器神经网络 5.1 设计实例分析 clear all; close all; P=[ ; ]; ...