https://vjudge.net/problem/UVA-10003

题意:

有一根长度为L的棍子,还有n个切割点的位置。你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小。每次切割的费用等于被切割的木棍长度。例如,L=10,切割点为2,4,7。如果按照2,4,7的顺序,费用为10+8+6=4,如果按照4,2,7的顺序,费用为10+4+6=0.

思路:

这道题目和最优矩阵链乘是一样的,方法是按照区间大小递增的顺序递推,因为长区间的值依赖于短区间的值

设d(i,j)为切割小木棍i~j的最优费用,则转移方程为d(i,j)=min{ d(i,j) , d(i,k)+d(k,j)+a[j]-a[i] }

把切割点编号为1~n,左边界编号为0,右边界编号为n+1,则答案为d(0,n+1)。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std; const int INF = ; int length, n;
int a[];
int d[][]; int main()
{
//freopen("D:\\txt.txt", "r", stdin);
while (cin>>length && length)
{
scanf("%d", &n);
for (int i = ; i <= n; i++)
scanf("%d", &a[i]);
a[] = ;
a[n + ] = length;
for (int i = ; i <= n + ; i++)
{
for (int j = ; j +i <= n + ; j++)
{
int r = i + j;
if (i == ) d[j][r] = ;
else
{
d[j][r] = INF;
for (int k = j + ; k < r; k++)
d[j][r] = min(d[j][r], d[j][k] + d[k][r] + a[r] - a[j]);
}
}
}
printf("The minimum cutting is %d.\n", d[][n + ]);
}
return ;
}

UVa 10003 切木棍(区间DP+最优矩阵链乘)的更多相关文章

  1. UVA 10003 切木棍(普通DP)

    切木棍 紫书P278 算是简单的dp了吧,当然,这是看完别人题解后的想法,呵呵,我仍然是想了半小时,没思路,啥时候能自个整个dp啊!!→_→ dp的时候,输入数组必须从1开始,一定要注意状态的设计,和 ...

  2. UVA 10003 Cutting Sticks 区间DP+记忆化搜索

    UVA 10003 Cutting Sticks+区间DP 纵有疾风起 题目大意 有一个长为L的木棍,木棍中间有n个切点.每次切割的费用为当前木棍的长度.求切割木棍的最小费用 输入输出 第一行是木棍的 ...

  3. POJ1651 Multiplication Puzzle —— DP 最优矩阵链乘 区间DP

    题目链接:https://vjudge.net/problem/POJ-1651 Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65 ...

  4. uva 10003 Cutting Sticks(区间DP)

    题目连接:10003 - Cutting Sticks 题目大意:给出一个长l的木棍, 再给出n个要求切割的点,每次切割的代价是当前木棍的长度, 现在要求输出最小代价. 解题思路:区间DP, 每次查找 ...

  5. UVA - 1331 Minimax Triangulation (区间dp)(最优三角剖分)

    题目链接 把一个多边形剖分成若干个三角形,使得其中最大的三角形面积最小. 比较经典的一道dp问题 设dp[l][r]为把多边形[l,r]剖分成三角形的最大三角形面积中的最小值,则$dp[l][r]=m ...

  6. UVA 10003 Cutting Sticks(区间dp)

    Description    Cutting Sticks  You have to cut a wood stick into pieces. The most affordable company ...

  7. Uva 10891 经典博弈区间DP

    经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...

  8. 10003 Cutting Sticks(区间dp)

      Cutting Sticks  You have to cut a wood stick into pieces. The most affordable company, The Analog ...

  9. UVa 1632 阿里巴巴(区间DP)

    https://vjudge.net/problem/UVA-1632 题意: 直线上有n个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba可以从任意位置出发,求访问完所有点的最短 ...

随机推荐

  1. 12.预处理数据的方法总结(使用sklearn-preprocessing)

    https://blog.csdn.net/sinat_33761963/article/details/53433799

  2. NGINX负载均衡缓存配置

    环境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5 1 概述 如果我们的架构是前端负载均衡后端WEB集群时,可以开启nginx的缓存功 ...

  3. Py之np.concatenate函数【转载】

    转自:https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html 1.nupmy.concatenate函数 ...

  4. div 在css中透明度怎么调?

    可以用这个属性:opacity: 0.95;opacity为属性,0.95为值(其中值的范围在0~1之间) 参考:https://zhidao.baidu.com/question/689118188 ...

  5. linux mysql安装问题

    1.rpm -qa | grep mysql   //首先检查是否安装了mysql   2.如果安装了,卸载 rpm -e mysql   3\ 下载地址 http://dev.mysql.com/d ...

  6. BufferedImage操作图片笔记(转)

    BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换.图片变灰. ...

  7. 80. Remove Duplicates from Sorted Array II(双指针)

    Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twic ...

  8. hdu3511 Prison Break 圆的扫描线

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=3511 题目: Prison Break Time Limit: 10000/5000 MS ( ...

  9. Linux 安装gcc、gcc-c++编译器

    安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) 方式一:yum安装 使用ISO制作yum源:Linux 使用系统ISO制作yum源 y ...

  10. 搭建Linux-java web运行环境之一:安装jdk+tomcat

    环境 OS:Red Hat Enterprise Linux Server release 7.3 (Maipo) JDK:jdk-7u80-linux-x64.tar.gz Tomcat:apach ...