Cutting Sticks UVA - 10003
题解: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相关推荐
- UVA - 10003 - Cutting Sticks
原命题链接:PDF/Vjudge 题目的意思是:告诉木棍的总长度,切点个数,和切点位置.每次切割花费的力气为切割的木棍的长度,求出最小花费的力气值. 还没怎么开始看dp,一开始看这道题目,想起了做过的 ...
- uva 10003——Cutting Sticks
题意:给定一长为L的木棍和n个切割点,每次切割的费用为切割的长度,求最小的费用. 思路:dp,子问题是区间(i,j)的最小费用,临界是(i,j)只有一个切割点.dp[i,j]=min(dp[i,k]+ ...
- UVA 10003 Cutting Sticks (区间dp)
题意: 给你一根木块,让你在n个点切块(不能改变顺序),使得总花费最小,看拿来切的那根木棍的长度. 代码: #include <map> #include <set> #inc ...
- UVA 10003 Cutting Sticks
大意:确定切割木棍的次序, 代价为当前木棍长度,使得切割的总的代价最小. 思路:我想了很久,后来发现状态转移方程可以这样表示:d[i][j] = min(d[i][j], d[i][k]+d[k][j ...
- UVa 10003 - Cutting Sticks
记忆化搜索.还有递归调用.大概题意就是一根木棍的长度length,按他所给的点切割.求最大的价值. X , Y 表示 X点到Y点的.转移方程vis[X][Y] = min ( DP[X][i] + D ...
- Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)
题目大意:将n节木棒接成m个长度相等的木条,要求木条的长度尽可能的短 Time limit 3000 ms OS Linux George took sticks of the sam ...
- UVA10003 切木棍 Cutting Sticks(区间DP、细节)
整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...
- Cutting Sticks
UVA10003 这是一道区间动态规划 定义:dp[i][j]dp[i][j]dp[i][j]为第iii个切割点到第jjj个切割点之间的木条的最小切割费用,Point[i]Point[i]Point[ ...
- Cutting Chains UVA - 818
题目传送门 题意:给你n个环,这些环有一些已经连在了一起,你可以将其中的一些环打开在关闭,问你最少打开几个环可以使所有的环联成一条链. 思路:这个题比赛的时候用并查集加欧拉路写的,但是并没有写出来,比 ...
最新文章
- 3gpp文件头文件解析_居于LLVM 的命令行参数解析
- java火箭应用_从C++入手,探寻java的特点
- Istio如何使用相同的端口访问网格外服务
- 安装环境 php5.2 mysql_ubuntu安装配置apache2+php5.2+mysql5环境教程
- 网络:http请求之几种常见技术
- JavaScript 基础,登录前端验证
- BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)
- 2021湖北高考个人成绩排名查询,2021湖北高考总成绩一分一段排名
- ASP.NET中常用输出JS脚本的类(改进版)
- 【AI视野·今日Robot 机器人论文速览 第十期】Fri, 18 Jun 2021
- python生成一圈数包裹一圈数的数组
- spring原理学习
- Javascript 第五章总结:A trip to Objectville
- 破解工具之调试器和相关破解案例视频教程大全
- [iOS] UIScrollView (UIWebView) 截长屏功能实现
- php在线翻译,PHP 在线翻译函数代码
- html5中header的作用,HTML5中的header标签是什么意思?HTML5中header标签具体使用方法你知道吗?...
- 如何查看计算机有无无线连接功能,你可能不知道的,电脑自带的WIFI信号发射功能!...
- buuctf crypto Quoted-printable
- 弘辽科技:抖音评价分析看板数据如何解读?
热门文章
- mysql 加入列,改动列,删除列。
- saltstack一些常用模块和api调用方法
- 【资料】wpcap.dll/Packet.dll库中相应函数
- 正则表达式(Regular Expression)
- 如果知道两点的经纬度 如何算两点之间的距离
- html服务流程如何实现_朱传燕:美容院如何规范服务流程,提升专业口碑
- Python编辑器与集成开发环境(IDE)选择
- MATLAB 与Modelsim之间通过Linker的联合仿真
- 可信计算 沈昌祥_沈昌祥院士在南宁开展网络安全前沿知识讲座
- 控件无法安装,windows已经阻止此软件因为无法验证发行者