#洛谷 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;
}

最新文章

  1. Yii2的View中JS代码添加
  2. android 系统定制的小技巧(网络收集)
  3. OpenSource.com 评出 2014 年十佳开源软件
  4. PHP-5.5.10+Apache httpd-2.4.9在Windows系统下配置实战
  5. EF分页问题探讨之 OrderBy
  6. 前端自动化构建工具-yoman浅谈
  7. poj 3294
  8. Mac系统下XAMPP的简单使用
  9. jquery 上传图片转为base64,ajax提交到后台
  10. 导出和导入Docker容器
  11. 网络小白之WAN与LAN的区别
  12. shiroUtil工具类
  13. [Swift]LeetCode557. 反转字符串中的单词 III | Reverse Words in a String III
  14. sprigmvc 传值jsp页面
  15. 步步为营-84-数字转化为金额的Js+enter键取消页面刷新
  16. 一个可爱 &amp; 小清新的加载等待Android控件
  17. 进程守护为什么选择pm2
  18. (转)Android学习路线总结,绝对干货
  19. mongodb-添加或删除字段
  20. 关于Linux用户名

热门文章

  1. JavaScript(DOM编程三)
  2. 环境搭建Selenium2+Eclipse+Java+TestNG_(一)
  3. 最短路&amp;查分约束
  4. 0108MySQL集群搭建详解(三种结点分离)
  5. spring boot的几种配置类型
  6. T4系列文章之1:认识T4
  7. 浅谈cocos2dx(17) 中单例管理模式
  8. hdoj--2120--Ice_cream&#39;s world I(并查集判断环)
  9. 7.matlab字符串分析
  10. Combo Select – jQuery可搜索下拉框插件