Uva 437 巴比伦塔 && UVA10003
要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用
用结构体记录一块石头的三种放置情况,按面积排序。
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的更多相关文章
- uva 437 巴比伦塔(DAG上dp)
巴比伦塔 紫书P269 看完紫书,终于可以自己写一个dp了 :) [题目链接]巴比伦塔 [题目类型]DAG上dp &题意: 有n种立方体 n<=30,每种有无穷个,要求选一些立方体摞成一 ...
- UVa 437 巴比伦塔
https://vjudge.net/problem/UVA-437 这道题和HDU的Monkey and Banana完全一样. #include<iostream> #include& ...
- UVA 437 巴比伦塔 【DAG上DP/LIS变形】
[链接]:https://cn.vjudge.net/problem/UVA-437 [题意]:给你n个立方体,让你以长宽为底,一个个搭起来(下面的立方体的长和宽必须大于上面的长和宽)求能得到的最长高 ...
- UVA 437 十九 The Tower of Babylon
The Tower of Babylon Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Subm ...
- uva 437,巴比伦塔
题目链接:https://uva.onlinejudge.org/external/4/437.pdf 题意:巴比伦塔: 给出n种立方体,一个立方体能放到另一个立方体上,必须满足,底面一定要小于下面的 ...
- UVA 437 The Tower of Babylon巴比伦塔
题意:有n(n≤30)种立方体,每种有无穷多个.要求选一些立方体摞成一根尽量高的柱子(可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽. 评测地址:http:/ ...
- 【UVA 437】The Tower of Babylon(记忆化搜索写法)
[题目链接]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- UVa 437 The Tower of Babylon(经典动态规划)
传送门 Description Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details ...
- UVa 437 The Tower of Babylon
Description Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of ...
随机推荐
- Beta冲刺 第一天
Beta冲刺 第一天 1. 昨天的困难 由于今天还是第一天,所以暂时没有昨天的困难. 2. 今天解决的进度 潘伟靖: 对代码进行了review 1.将某些硬编码改为软编码 2.合并了一些方法,简化代码 ...
- Scrum 冲刺 第六日
Scrum 冲刺 第六日 目录 要求 项目链接 燃尽图 问题 今日任务 明日计划 成员贡献量 要求 各个成员今日完成的任务(如果完成的任务为开发或测试任务,需给出对应的Github代码签入记录截图:如 ...
- Flask 学习 十五 性能
记录影响性能的数据库查询 app/main/views.py from flask_sqlalchemy import get_debug_queries @main.after_app_reques ...
- 前端面试题之css
1.请列出几个具有继承特性的css属性 font-family font-size color line-height text-align text-indent 2.阐述display: ...
- 自己动手写CPU(基于FPGA与Verilog)
大三上学期开展了数字系统设计的课程,下学期便要求自己写一个单周期CPU和一个多周期CPU,既然要学,就记录一下学习的过程. CPU--中央处理器,顾名思义,是计算机中最重要的一部分,功能就是周而复始地 ...
- Vue 爬坑之路(十一)—— 基于 Nuxt.js 实现服务端渲染(SSR)
直接使用 Vue 构建前端单页面应用,页面源码时只有简单的几行 html,这并不利于网站的 SEO,这时候就需要服务端渲染 2016 年 10 月 25 日,zeit.co 背后的团队对外发布了一个 ...
- service层报错找不到方法Invalid bound statement (not found)
报错信息如下 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.imooc.se ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
- idea 找不到classpath 为resource下的xml
注入时不能自动找到在src/main/resources下的xml. @ContextConfiguration(locations = { "classpath:applicationCo ...
- Docker学习笔记 - Docker的数据卷
一.什么是数据卷? 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数据 ...