春校赛--求索溪边的砖
春校赛–求索溪边的砖 (10分)
众所周知,求索溪边堆了很多砖。
这些砖的长宽高规格不太一样。 一共有n{n<=30}种砖,第i种砖的长宽高分别为{Xi,Yi,Zi}, {xi,yi,zi < 10000},每种砖有无限多。学校开展桃花节需要将这些砖搬走, 高级搬砖工小胖接了活。
我们搬砖时都是将砖叠成一摞再搬。小胖的力气非常大,当然希望尽可能的摞到最高, 但是只有上面砖的底面两条边都小于下面砖底面相对的两条边时,才能叠稳,注意砖可以旋转。(如: 长宽高为[3,4,5]的砖能叠在[2,5,5],[5,4,3]上,不能叠在[2,4,3]上)。 帮小胖算算他第一次最多能搬走多少砖。
输入描述
多组输入 , 每组一个整数n{n<=30}表示砖的种类,接下来n行每行3个整数x,y,z {x,y,z < 10000}
n=0表示输入结束。
输出描述
n 行,每行一个整数表示该组样例中第一次最多能搬砖的数量
输入样例
1
10 20 30
2
6 8 10
5 5 5
7
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
5
31 41 59
26 53 58
97 93 23
84 62 64
33 83 27
0
输出样例
2
3
7
6
明显的矩形嵌套,但我第一次写的时候不知道用dp啊,蠢死啊,加油啊!
上代码
#include"iostream"
#include"stdio.h"
#include"algorithm"
#include"cstring"
using namespace std;struct jx { int c,k; }S[10001];bool cmp1(int a,int b) { return a>b; } int map[100][100],dp[100]; int find(int x,int n) { if(dp[x])return dp[x]; for(int i = 0;i < n;i++) if(map[x][i]) { dp[x] = max(dp[x],find(i,n)+map[x][i]); } return dp[x]; }
int main()
{
int N,ans[1001],Q=0;
while(~scanf("%d",&N))
{if(N==0)break;memset(dp,0,sizeof(dp));memset(map,0,sizeof(map));int p = 0;int q[3];p = 0;int a[5],L,j,ans1 = 0;for(int i = 0;i < N;i++){scanf("%d%d%d",&a[0],&a[1],&a[2]);if(a[0]!=a[1]&&a[1]!=a[2]&&a[0]!=a[2])L = 3;else {if(a[0]==a[1]&&a[1]==a[2])L = 1; elseL = 2; }sort(a,a+3,cmp1);if(L==3){S[p].c=a[1],S[p].k=a[2],p++;S[p].c=a[0],S[p].k=a[2],p++;S[p].c=a[0],S[p].k=a[1],p++;}else{S[p].c=a[0],S[p].k=a[1],p++;if(L==2)S[p].c=a[1],S[p].k = a[2],p++;}}for(int i = 0;i < p;i++)for(int j = 0;j < p;j++)if(i!=j){if(S[i].c<S[j].c&&S[i].k<S[j].k)map[i][j] = 1;}for(int i = 0;i < p;i++)if(!dp[i])find(i,p);int Max = 0;for(int i = 0;i < p;i++){Max = max(Max,dp[i]);}cout << Max + 1<<endl;}return 0;}
春校赛--求索溪边的砖相关推荐
- 春校赛--求索溪边树下的小瓜
春校赛–求索溪边树下的小瓜 (10分) 题目内容: "三峡畔,长江边-"小瓜哼着校歌,慢悠悠的求索溪边散步.忽然,他在求索溪旁边发现一个非常漂亮的银杏树.于是小瓜走到树下一手拉着银 ...
- 春校赛——求索溪的树枝
题目内容: 求索溪边散落一些树枝. 给你n根树枝,这些树枝能拼接出m根长度一样的大树枝,求能拼接的最小长度. 输入描述 每组输入包含2行. 第一行为树枝数量n(n <= 45). 第二行包含由空 ...
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列
埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L-K序列 链接:https://www.nowcoder.com/acm/contest/91/L 来源:牛客网 题目描述 给一个数组 ...
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance
埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A-Wasserstein Distance 链接:https://www.nowcoder.com/acm/contest/91/A ...
- 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果
埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 E-小Y吃苹果 链接:https://www.nowcoder.com/acm/contest/91/E 来源:牛客网 题目描述 小Y买 ...
- 好久没撸c,第一场回状态的题(埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
题目链接: 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 A:Wasserstein Distance ## 题意:有2大堆柱状图的土(总体积相同,问从第一堆土移动到第二堆消耗最少的 ...
- [置顶]2010年东北大学ACM程序设计竞赛冬季校赛题解
8题只做出4题比较easy的题,而且做得挺麻烦,看来还要多练练. AC的题如下 NEUOJ 1112 I Love Apple Description So many people love app ...
- 2017校赛 问题 F: 懒人得多动脑
题目描述 小D的家A和学校B都恰好在以点F为焦点的双曲线上,而小D每日所需的生活水源在一条平行该双曲线准线的直线上,设它的值为v.大家都知道,每天都是要喝水的,但是小D有点懒,他希望自己能在去上学或者 ...
- 关于安徽赛区推广校赛的实施办法
关于安徽赛区 推广校赛的实施办法 全国组委会: 安徽赛区作为第一个省级赛区自2010年举办至今,受到安徽省教育厅和安徽各高校高度认可,是安徽省教育厅重点支持的大学生学科和技能竞赛A类赛事.但安徽赛 ...
最新文章
- 几个我收藏的经典网站
- 环境变量、用户变量、系统变量
- 大流量的网站如何解决访问量的问题?
- 在技​​术团队中发展的7个关键技能
- spring cloud netflix
- 日本Blogger专用电脑
- 3.hello hibernate
- dw如何写php代码提示,DW CS5 jquery代码提示插件
- 计算机ppt试题训练,powerpoint2010操作题 计算机POWERPOINT操作题
- java 定时器qz xm配置_java_Java的作业调度类库Quartz基本使用指南,一、常用接口:
1、Job接口: - phpStudy...
- [2019杭电多校第五场][hdu6630]permutation 2
- 前台实现ajax 需注意的地方
- 新浪微博API应用程序接口_什么是API? 应用程序编程接口说明
- SQL server2012安装
- java基于spingboot+vue的拼团旅游系统 elementui
- 笔记本电脑频繁自动重启_电脑老是自动重启,电脑总是自动重启 - 电脑经常自动重启的解决办法 - 安全专题...
- [知乎]这可能是最全面的龙芯3A3000处理器评测
- 新MacBookAir (M1 2020)修改开机启登录密码
- 【数据分析】基于RFM模型的线上零售中的客户细分(二):RFM模型实战
- 使用计算机要遵循哪些规则,中国大学MOOC:\\\在计算机网络的定义中,把众多计算机有机连接起来要遵循规定的约定和规则,称之为( )。\\\;...
热门文章
- 程序员辅助工具,某些时候能有意外的收获
- [英语阅读]“机器猫”担任日本“动漫大使”
- VR全景智慧城市:构筑未来城市的数字化大融合
- 职业规划不可不读的19个案例故事
- 基于HTML美食文化网页设计与实现——html+css+javascript+jquery+bootstarp响应式西餐厅美食网站...
- Matlab自用版灰色关联度模型
- Java MathContext类| toString()方法与示例
- UI设计师如何提升审美?
- [个人心得] 关于TM影像各波段组合的简介[转]
- Python下载视频函数