题解:dp[ i ][ j ]=min { dp[ i ][ k ]+dp[ k ][ j ] }+a[ j ]-a [i ]。

和石子归并是一样的问题,枚举区间的长度,然后更新这个区间的值。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #define INF 1e8
 6 using namespace std;
 7
 8 int n,L;
 9 int a[50],dp[50][50];
10
11 void solve()
12 {   for(int i=0;i<=n;i++) dp[i][i+1]=0;
13     for(int len=2;len<=n+1;len++){
14         for(int i=0;i+len<=n+1;i++){
15             int j=len+i;
16             for(int k=i+1;k<j;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
17             dp[i][j]+=a[j]-a[i];
18         }
19     }
20
21     printf("The minimum cutting is %d.\n",dp[0][n+1]);
22 }
23
24 int main()
25 {    while(cin>>L&&L){
26         cin>>n;
27         for(int i=1;i<=n;i++) cin>>a[i];
28         a[0]=0,a[n+1]=L;
29         memset(dp,0x3f,sizeof(dp));
30         solve();
31     }
32     return 0;
33 }

转载于:https://www.cnblogs.com/zgglj-com/p/7298904.html

Cutting Sticks UVA - 10003相关推荐

  1. UVA - 10003 - Cutting Sticks

    原命题链接:PDF/Vjudge 题目的意思是:告诉木棍的总长度,切点个数,和切点位置.每次切割花费的力气为切割的木棍的长度,求出最小花费的力气值. 还没怎么开始看dp,一开始看这道题目,想起了做过的 ...

  2. uva 10003——Cutting Sticks

    题意:给定一长为L的木棍和n个切割点,每次切割的费用为切割的长度,求最小的费用. 思路:dp,子问题是区间(i,j)的最小费用,临界是(i,j)只有一个切割点.dp[i,j]=min(dp[i,k]+ ...

  3. UVA 10003 Cutting Sticks (区间dp)

    题意: 给你一根木块,让你在n个点切块(不能改变顺序),使得总花费最小,看拿来切的那根木棍的长度. 代码: #include <map> #include <set> #inc ...

  4. UVA 10003 Cutting Sticks

    大意:确定切割木棍的次序, 代价为当前木棍长度,使得切割的总的代价最小. 思路:我想了很久,后来发现状态转移方程可以这样表示:d[i][j] = min(d[i][j], d[i][k]+d[k][j ...

  5. UVa 10003 - Cutting Sticks

    记忆化搜索.还有递归调用.大概题意就是一根木棍的长度length,按他所给的点切割.求最大的价值. X , Y 表示 X点到Y点的.转移方程vis[X][Y] = min ( DP[X][i] + D ...

  6. Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)

    题目大意:将n节木棒接成m个长度相等的木条,要求木条的长度尽可能的短 Time limit     3000 ms OS     Linux George took sticks of the sam ...

  7. UVA10003 切木棍 Cutting Sticks(区间DP、细节)

    整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...

  8. Cutting Sticks

    UVA10003 这是一道区间动态规划 定义:dp[i][j]dp[i][j]dp[i][j]为第iii个切割点到第jjj个切割点之间的木条的最小切割费用,Point[i]Point[i]Point[ ...

  9. Cutting Chains UVA - 818

    题目传送门 题意:给你n个环,这些环有一些已经连在了一起,你可以将其中的一些环打开在关闭,问你最少打开几个环可以使所有的环联成一条链. 思路:这个题比赛的时候用并查集加欧拉路写的,但是并没有写出来,比 ...

最新文章

  1. 3gpp文件头文件解析_居于LLVM 的命令行参数解析
  2. java火箭应用_从C++入手,探寻java的特点
  3. Istio如何使用相同的端口访问网格外服务
  4. 安装环境 php5.2 mysql_ubuntu安装配置apache2+php5.2+mysql5环境教程
  5. 网络:http请求之几种常见技术
  6. JavaScript 基础,登录前端验证
  7. BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)
  8. 2021湖北高考个人成绩排名查询,2021湖北高考总成绩一分一段排名
  9. ASP.NET中常用输出JS脚本的类(改进版)
  10. 【AI视野·今日Robot 机器人论文速览 第十期】Fri, 18 Jun 2021
  11. python生成一圈数包裹一圈数的数组
  12. spring原理学习
  13. Javascript 第五章总结:A trip to Objectville
  14. 破解工具之调试器和相关破解案例视频教程大全
  15. [iOS] UIScrollView (UIWebView) 截长屏功能实现
  16. php在线翻译,PHP 在线翻译函数代码
  17. html5中header的作用,HTML5中的header标签是什么意思?HTML5中header标签具体使用方法你知道吗?...
  18. 如何查看计算机有无无线连接功能,你可能不知道的,电脑自带的WIFI信号发射功能!...
  19. buuctf crypto Quoted-printable
  20. 弘辽科技:抖音评价分析看板数据如何解读?

热门文章

  1. mysql 加入列,改动列,删除列。
  2. saltstack一些常用模块和api调用方法
  3. 【资料】wpcap.dll/Packet.dll库中相应函数
  4. 正则表达式(Regular Expression)
  5. 如果知道两点的经纬度 如何算两点之间的距离
  6. html服务流程如何实现_朱传燕:美容院如何规范服务流程,提升专业口碑
  7. Python编辑器与集成开发环境(IDE)选择
  8. MATLAB 与Modelsim之间通过Linker的联合仿真
  9. 可信计算 沈昌祥_沈昌祥院士在南宁开展网络安全前沿知识讲座
  10. 控件无法安装,windows已经阻止此软件因为无法验证发行者