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

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

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

#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 0x3f3f3f3f using 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 巴比伦塔(DAG上dp)

    巴比伦塔 紫书P269 看完紫书,终于可以自己写一个dp了 :) [题目链接]巴比伦塔 [题目类型]DAG上dp &题意: 有n种立方体 n<=30,每种有无穷个,要求选一些立方体摞成一 ...

  2. UVa 437 巴比伦塔

    https://vjudge.net/problem/UVA-437 这道题和HDU的Monkey and Banana完全一样. #include<iostream> #include& ...

  3. UVA 437 巴比伦塔 【DAG上DP/LIS变形】

    [链接]:https://cn.vjudge.net/problem/UVA-437 [题意]:给你n个立方体,让你以长宽为底,一个个搭起来(下面的立方体的长和宽必须大于上面的长和宽)求能得到的最长高 ...

  4. UVA 437 十九 The Tower of Babylon

    The Tower of Babylon Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Subm ...

  5. uva 437,巴比伦塔

    题目链接:https://uva.onlinejudge.org/external/4/437.pdf 题意:巴比伦塔: 给出n种立方体,一个立方体能放到另一个立方体上,必须满足,底面一定要小于下面的 ...

  6. UVA 437 The Tower of Babylon巴比伦塔

    题意:有n(n≤30)种立方体,每种有无穷多个.要求选一些立方体摞成一根尽量高的柱子(可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽. 评测地址:http:/ ...

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

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

  8. UVa 437 The Tower of Babylon(经典动态规划)

    传送门 Description Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details ...

  9. UVa 437 The Tower of Babylon

    Description   Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of ...

随机推荐

  1. Ubuntu下安装gsoap

    昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考. 首先下载gsoap,我下载的是gsoap-2.8.1. ...

  2. POST请求的提交

    var http = require("http"); var querystring = require("querystring"); //创建服务器 va ...

  3. 51Nod P1100 斜率最大

    传送门: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1100 由于2 <= N <= 10000, 所以 ...

  4. 服务器Windows Server 2008 远程控制安全设置技巧

    为了保障服务器远程控制操作的安全性,Windows Server 2008系统特意在这方面进行了强化,新推出了许多安全防范功能,不过有的功能在默认状态下并没有启用,这需要我们自行动手,对该系统进行合适 ...

  5. 关于tomcat和jetty的乱码问题

    现象:windows 下的tomcat和jetty默认安装都有问题,linux下的没有问题. 分析:操作系统字符集发生作用了,程序有些处理可能使用了该默认字符集,导致两边现象不一致,建议排查,先尝试通 ...

  6. C# Bootstrap table之 分页

    效果如图: 一.声明talbe <div class="container"> <table id="table" class="t ...

  7. Spring(2)——Spring IoC 详解

    Spring IoC 概述 IoC:Inverse of Control(控制反转) 读作"反转控制",更好理解,不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控 ...

  8. EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值

    一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为  -1 ,sqlserver 里面  还没有测试过 using (var ctx = new MyDbConte ...

  9. elasticsearch启动常见错误

    问题出现环境,OS版本:CentOS-7-x86_64-Minimal-1708:ES版本:elasticsearch-6.2.2. 1.max file descriptors [4096] for ...

  10. jvm学习记录-对象的创建、对象的内存布局、对象的访问定位

    简述 今天继续写<深入理解java虚拟机>的对象创建的理解.这次和上次隔的时间有些长,是因为有些东西确实不好理解,就查阅各种资料,然后弄明白了才来做记录. (此文中所阐述的内容都是以Hot ...