要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用

用结构体记录一块石头的三种放置情况,按面积排序。

dp[i] = max(dp[i],dp[j] + block[i].hight);     当选择到i时,与前几个比较,找出当前情况下的高度最高可能

<span style="font-size:18px;">#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;struct node
{int x;int y;int hight;
}block[100];
int dp[100];
bool cmp(node a,node b)
{return a.x*a.y < b.x*b.y;
}int main()
{int n,a,b,c,cas = 1;while(scanf("%d",&n) && n){int tmp = 1;for(int i = 0;i < n;i++){scanf("%d%d%d",&a,&b,&c);block[tmp].x = a;block[tmp].y = b;block[tmp++].hight = c;block[tmp].x = c;block[tmp].y = a;block[tmp++].hight = b;block[tmp].x = b;block[tmp].y = c;block[tmp++].hight = a;}sort(block+1,block+tmp,cmp);memset(dp,0,sizeof(dp));for(int i = 1;i < tmp;i++){dp[i] = block[i].hight;for(int j = 1;j < i;j++){if(((block[i].x>block[j].x)&&(block[i].y>block[j].y))||((block[i].x>block[j].y)&&(block[i].y>block[j].x)))dp[i] = max(dp[i],dp[j] + block[i].hight);}}int maxn=0;for(int i = 1;i < tmp;i++)if(dp[i] > maxn)maxn = dp[i];printf("Case %d: maximum height = %d\n",cas++,maxn);}return 0;
}</span>

有一根长10公尺的木棍必须在第2、4、7公尺的地方切割。这个时候就有几种选择了。你可以选择先切2公尺的地方,然后切4公尺的地方,最后切7公尺的地方。这样的选择其成本为:10+8+6=24。因为第一次切时木棍长10公尺,第二次切时木棍长8公尺,第三次切时木棍长6公尺。但是如果你选择先切4公尺的地方,然后切2公尺的地方,最后切7公尺的地方,其成本为:10+4+6=20,这成本就是一个较好的选择。

你的老板相信你的电脑能力一定可以找出切割一木棍所需最小的成本。

p[j] - p[i]代表第一刀的费用,切完后吧它变成i~k  和  k~j 两个部分

#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAX 0x3f3f3f3fusing namespace std;int len;
int d[50][50];
int p[51];int main()
{int n;while(scanf("%d",&n) && n){int m;scanf("%d",&m);for(int i=1; i <= m; i++)scanf("%d",&p[i]);p[0] = 0,p[m+1] = n;memset(d,0,sizeof(d));for(int l = 2; l <= m+1; l++)for(int i = 0; i + l <= m+1; i++){int j = i + l;d[i][j] = MAX;for(int k = i+1; k < j; k++){d[i][j] = min(d[i][j],d[i][k]+d[k][j]+p[j]-p[i]);}}printf("The minimum cutting is ");printf("%d.\n",d[0][m+1]);}return 0;
}

Uva 437 巴比伦塔  UVA10003相关推荐

  1. 【UVA 437】The Tower of Babylon(记忆化搜索写法)

    [题目链接]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  2. Uva 437 - The Tower of Babylon(DP)

    题目链接 https://vjudge.net/problem/UVA-437 [题意]        给定n种不同的立方体,每种立方体都有无穷多个,现在要用它们跌放在一起组成一个巴比伦塔,并且处在某 ...

  3. uva 437——The Tower of Babylon

    题意:给定n个长方体,然后堆积最高的塔,要求上面的面积小于下面的面积. 思路:Dp,先把长方体的所有放的情况都构造出来放到数组里,对于当前节点,如果能够在前面找到面积比当前小,高度累加比当前高的则转移 ...

  4. 【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)

    [Solution] 接上一篇,在处理有向无环图的最长链问题的时候,可以在做拓扑排序的同时,一边做DP; 设f[i]表示第i个方块作为最上面的最高值; f[y]=max(f[y],f[x]+h[y]) ...

  5. UVa在线比赛单题汇总-----DP专题

    动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...

  6. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  7. DP(动态规划)总结

    1. 写在前面的话 之前写了一篇不像总结的动态规划总结,感觉更像是一个成长历程,所以就打算重写一篇. 2. 对DP简单的总结 dp的题目特点 求最大或者最小值(如背包:价值最大.凑硬币:数量最少--) ...

  8. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  9. 【区间dp】uva10003+ uva 1626 括号匹配问题 【有空自己记忆化写一下!!!】

    讲道理,其实我还不是太懂,这个题看到了两种写法 之前大概想的差不多,要这样实现呀: 常规写法,大概n--3 递归写法,稍微好理解一点 好了,接下来自从看了liuchuo的博客我要变身玛丽苏橙色了 题目 ...

  10. UVa 496 Simply Subsets (STLset_intersection)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh ...

最新文章

  1. java字符串去重复_Java 8新特性:字符串去重
  2. 数组-移除元素(交换移除)
  3. base64是哪个jar包的_如何通过一个类名找到它属于哪个jar包?
  4. android开发学习 ------- 弹出框
  5. 8条关于Web前端性能的优化建议
  6. C++实现树的基本操作,界面友好,操作方便,运行流畅,运用模板
  7. c++头文件包含问题
  8. 【Gitlab+Jenkins+Ansible】构建自动化部署
  9. Android 系统(160)---Android 32/64 bits 升级准则
  10. 小学三年级计算机基础知识课件,小学三年级信息技术基础知识ppt课件.ppt
  11. python 正则表达式 分组_正则表达式之分组的用法
  12. Linux系统教学-Lesson01
  13. 微信小程序添加icon图标教程
  14. 关于ccs软件的简单使用
  15. 计算机视觉论文-2021-06-02
  16. 隐藏在浏览器背后的“黑手”
  17. oracle收款凭证做错月份,​上个月的银行凭证做错了怎么办
  18. 区块链学习6:图灵完备和图灵不完备
  19. 计算机二级c语言软件是,我想考计算机二级考C语言,用哪个教材?下载哪个软件?谢谢!!!!...
  20. 无线传感器网络期末复习知识点总结资料

热门文章

  1. Google搜索技巧语法
  2. 如何使用计算机读文本,如何使用StrokeIt
  3. echarts设置饼图标示线以及标示文字的颜色等相关样式
  4. 一根辣条铸就的百亿生意,卫龙是如何成龙的
  5. 华滋先生:互联网创业,加入社群是有用的吗?
  6. w10运行游戏计算机中丢失xinput1-3.dll,Win10系统提示丢失xinput13dll的解决方法
  7. 互联网产品经理的主要职责(产品经理工作职责)
  8. 睁开双眼玩立体游戏!3D显示技术解析
  9. JAVA怎么提高cpu使用率_压力测试时,利用Java让CPU使用率达到100%
  10. EPS概念及EPC相关网元