uva10003 Cutting Sticks
2016-05-24 12:01
141 查看
题目链接
题目大意
一根长为len的木棍,上面有n个点需要切割,切割完之后有n+1根木棍。没切一根木棍时的费用等于木棍的长度,求最小的费用和。
思路
记忆化搜索。solve(l, r) = min(solve(l,k) + solve(k,r)) + a[r] - a[l]。l < k < r。 或者是dp,dp[l][r] = min(dp[l][k] + d[k][r] + a[r] - a[l]),l < k < r。
int solve(int l,int r) {//[0,n+1] if (dp[l][r]) return dp[l][r]; if (l == r - 1) return 0; dp[l][r] = INF; for (int i = l + 1;i < r;++i) { dp[l][r] = min(dp[l][r], solve(l, i) + solve(i, r) + a[r] - a[l]); } return dp[l][r]; } /****************************************/ a[0] = 0, a[n+1] = len; memset(dp, 0,sizeof dp); for (int d = 2;d <= n + 1;++d) { for (int l = 0;l + d <= n + 1;++l) { int r = l + d; dp[l][r] = INF; for (int k = l + 1;k < r;++k) dp[l][r] = min(dp[l][r], dp[l][k] + dp[k][r] + a[r] - a[l]); } }
相关文章推荐
- UE4动作流程总结
- Android程序员在Mac上开发常用的软件
- 使用POST请求跳转页面
- OpenCV中# define CV_EXPORTS __declspec(dllexport)的含义!
- 自定义View
- iOS中的round/ceil/floorf函数略解
- mac LaunchRocket图像化管理 php-fpm nginx mysql
- 高级碰撞检测技术
- C++中的dynamic_cast和static_cast
- juery的跨域请求2
- sql data_add()函数
- iOS开发 - 几道面试题
- 滴滴算法大赛算法解决过程 - 拟合算法
- redis随笔集-使用
- css学习笔记1
- Android从网络上获取图片的两种方式
- jQuery+php实时获取及响应文本框输入内容的方法
- 简单测试,iOS,webview的手势禁用
- Selenium WebDriver 中鼠标事件
- 十进制转换二、八、十六进制