题目链接:https://cn.vjudge.net/problem/UVA-10003

题意

有根棍子,上面有些分割点(n<50),每次按分割点切割棍子时,费用为当前棍子的长度。

问有什么样的顺序,使总费用最小。

思路

简单题,设dp[i][j]为在分割点ij之间棍子的最小切割费用。

有转移方程dp[i][j]=min( dp[i][k]+dp[k][j] )+pos[j]-pos[i]

注意边界条件dp[i][i+1]=0意思是i~i+1之间不需要切割费用。

提交过程

WA 边界条件给错
WA 输出错
AC

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=50+20, INF=0x3f3f3f3f;
int n, l;
int pos[maxn], data[maxn][maxn];
int dp(int l, int r){
if (r<=l+1) return 0;
if (data[l][r]) return data[l][r]; data[l][r]=INF;
for (int k=l+1; k<r; k++)
data[l][r]=min(data[l][r], dp(l, k)+dp(k, r));
return data[l][r]+=pos[r]-pos[l];
} int main(void){
while (scanf("%d", &l)==1 && l){
memset(data, 0, sizeof(data));
scanf("%d", &n);
pos[0]=0; pos[n+1]=l;
for (int i=1; i<=n; i++)
scanf("%d", &pos[i]);
printf("The minimum cutting is %d.\n", dp(0, n+1));
} return 0;
}
Time Memory Length Lang Submitted
150ms 691 C++ 5.3.0 2018-08-06 09:13:55

最新文章

  1. 基于python编写的天气抓取程序
  2. PHP 7 的新特性
  3. [日常训练]常州集训day3
  4. poj3372 Candy Distribution
  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
  6. 单点登录filter根据redis中的key判断是否退出
  7. Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
  8. 点击播放js
  9. 10个利用Eclipse调试Java的常见技巧
  10. 有关C语言学习的调查
  11. c语言_头文件
  12. angular中的路径问题
  13. appium+python搭建自动化测试框架_Tools安装(一)
  14. EffectiveC++ 第3章 资源管理
  15. xml可视化编辑器
  16. 如何入门vue之一
  17. HTML背景图片的相对位置设置
  18. C#延时函数
  19. DP的学习
  20. JAVA中通过JavaCV实现跨平台视频/图像处理-调用摄像头

热门文章

  1. Maven编译、打war包
  2. css 书写推荐顺序
  3. video标签实现简单视频背景+遇到问题(视频无法显示,不能自动播放)
  4. 学习SCSS
  5. POJ 2187 Beauty Contest( 凸包求最远点对 )
  6. poj 2954 Triangle 三角形内的整点数
  7. 如何解决zabbix中自定义监控mysql因密码造成的 Warning
  8. thinkPHP利用ajax异步上传图片并显示、删除
  9. [luogu] P3294 [SCOI2016]背单词 (贪心)
  10. (转)redis源代码分析 – event library