思路:

区间dp。dp[l][r][k]表示把区间[l, r]的石子合并成k堆所需要的最小代价。

实现:

 #include <iostream>
#include <cstring>
using namespace std; const int INF = 0x3f3f3f3f;
const int N = ; int a[N], sum[N], dp[N][N][N];
int n, L, R; int dfs(int l, int r, int k)
{
if (l == r) return k == ? : INF;
if (r - l + == k) return ;
if (dp[l][r][k] != -) return dp[l][r][k];
int ans = INF;
if (k == )
{
for (int i = L; i <= R; i++)
ans = min(ans, dfs(l, r, i) + sum[r] - sum[l - ]);
}
else
{
for (int i = ; i < r - l; i++)
ans = min(ans, dfs(l, l + i, ) + dfs(l + i + , r, k - ));
}
return dp[l][r][k] = ans;
} int main()
{
while (cin >> n >> L >> R)
{
memset(sum, , sizeof sum);
memset(dp, -, sizeof dp);
for (int i = ; i <= n; i++)
{
cin >> a[i];
sum[i] = sum[i - ] + a[i];
}
int ans = dfs(, n, );
cout << (ans == INF ? : ans) << endl;
}
return ;
}

最新文章

  1. 洛谷P1755 斐波那契的拆分
  2. HDU 2082 母函数模板题
  3. CSS块级元素与行级元素(转载)
  4. ios 面试题 0
  5. linux配置本地tomcat应用80端口转发
  6. 五、oracle基本建表语句
  7. Qt之对话框消失动画
  8. Python自学笔记-进程,线程(Mr serven)
  9. Java build path &amp;&amp; Deployment assembly &amp;&amp; 编译路径 &amp;&amp; 发布路径
  10. Python Base64 编码
  11. (⊙o⊙)…
  12. Ubuntu安装后上网问题,
  13. 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支
  14. 微信小程序避坑指南
  15. 树状数组区间加法&amp;区间求和操作
  16. 常见移动设备的 CSS3 Media Query 整理(iPhone/iPad/Galaxy/HTC One etc.)
  17. CISC, RISC 探究
  18. 域对象 request
  19. POJ 1321 棋盘问题(非常经典的dfs,入门题)
  20. [转]局域网共享一键修复 18.5.8 https://zhuanlan.zhihu.com/p/24178142

热门文章

  1. Ubuntu16.04 安装cuda9.0 cudnn 7.0.5
  2. kitti数据集标定文件解析
  3. This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended
  4. ETL 循环导入 平面文件
  5. conditon_variable(条件变量)用于线程间同步
  6. Java 类加载器的作用
  7. JAVA实现DIJKSTRA算法
  8. Python Matplotlib 中对于 bar 显示时间的问题
  9. 洛谷 P4704 太极剑【贪心】
  10. MySQL &#183; 性能优化 &#183; MySQL常见SQL错误用法