记录一下第一道ac的区间dp

题目:P1880 [NOI1995] 石子合并 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

代码:

#include <iostream>
using namespace std;
typedef long long ll;
int a[210], dpmax[210][210], dpmin[210][210], sum[210], ma = -1, mi = 1000000000;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
sum[i] = sum[i - 1] + a[i];
}
for (int i = n + 1; i <= 2 * n; ++i)
{
a[i] = a[i - n];
sum[i] = sum[i - 1] + a[i];
}
for (int len = 2; len <= n; ++len)
{
for (int i = 1; i <= 2 * n - len + 1; ++i) //延长了一倍,以解决石子成环的问题
{
int j = i + len - 1;
dpmin[i][j] = 1000000000;
for (int k = i; k < j; ++k)
{
dpmax[i][j] = max(dpmax[i][j], dpmax[i][k] + dpmax[k + 1][j] + sum[j] - sum[i - 1]);
dpmin[i][j] = min(dpmin[i][j], dpmin[i][k] + dpmin[k + 1][j] + sum[j] - sum[i - 1]);
}
}
}
for (int i = 1; i <= n; ++i)
{
ma = max(ma, dpmax[i][i + n - 1]);
mi = min(mi, dpmin[i][i + n - 1]);
}
cout << mi << endl
<< ma << endl;
return 0;
}

  

最新文章

  1. jQuery实现动态分割
  2. 多线程编程之Linux环境下的多线程(二)
  3. 安装ejabberd2并配置MySQL为其数据库
  4. 不使用var定义变量和使用var的区别
  5. Visual Studio 2012 编译C++显示cl命令
  6. Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
  7. js中boolean类型的理解
  8. 博客第一篇 osi七层网络传输模型
  9. IDEA中静态资源无法找到的原因
  10. jsonp原理和实例详解
  11. 【题解】Luogu P4450 双亲数
  12. NOI 2018网络同步赛(游记?)
  13. MP实战系列(十八)之XML文件热加载
  14. HTML JS 数据校验
  15. Mask R-CNN详解和安装
  16. P4782 【模板】2-SAT 问题 &amp;&amp; 2-SAT问题
  17. 【译】第十篇 Replication:故障排除
  18. rarcrack
  19. JavaScript设计模式-14.组合模式实现
  20. Mastering stack and heap for system reliability

热门文章

  1. vue.js+elementUI文件上传、文件导入、文件下载
  2. Java安全之Thymeleaf SSTI分析
  3. UVA1104 Chips Challenge
  4. KMP算法-字符匹配
  5. 2016-12-01,我的CSDN有排名啦!
  6. springboot单元测试 JUnit5
  7. [第二章]c++学习笔记5(类型转换构造函数)
  8. 问题 G: 心急的C小加
  9. 浏览器调用接口正常,jmeter调不通的可能原因
  10. 导出 doc