麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

hdu 1069

2019-11-11 06:45:54
字體:
來源:轉載
供稿:網友

A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, PRovide the monkey with some blocks. If the monkey is clever enough, it shall be able to reach the banana by placing one block on the top another to build a tower and climb up to get its favorite food.

The researchers have n types of blocks, and an unlimited supply of blocks of each type. Each type-i block was a rectangular solid with linear dimensions (xi, yi, zi). A block could be reoriented so that any two of its three dimensions determined the dimensions of the base and the other dimension was the height.

They want to make sure that the tallest tower possible by stacking blocks can reach the roof. The problem is that, in building a tower, one block could only be placed on top of another block as long as the two base dimensions of the upper block were both strictly smaller than the corresponding base dimensions of the lower block because there has to be some space for the monkey to step on. This meant, for example, that blocks oriented to have equal-sized bases couldn’t be stacked.

Your job is to write a program that determines the height of the tallest tower the monkey can build with a given set of blocks. Input The input file will contain one or more test cases. The first line of each test case contains an integer n, representing the number of different blocks in the following data set. The maximum value for n is 30. Each of the next n lines contains three integers representing the values xi, yi and zi. Input is terminated by a value of zero (0) for n. Output For each test case, print one line containing the case number (they are numbered sequentially starting from 1) and the height of the tallest possible tower in the format “Case case: maximum height = height”. Sample Input 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

題目:給出一些長方體,然后讓你把他堆成塔, 要求下面的塔的要比上面的塔大(長和寬), 而且每一種長方體的數量都是無限的。 簡單dp,由于每一個長方體的組合方案只有六種。把每一個長方體化成六個長方體。先排序即可

#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;const int maxn=1001000;int num[maxn+10];struct node{ int x,y,z,dp; node(int _x,int _y,int _z,int _dp):x(_x),y(_y),z(_z),dp(_dp){} node(){} bool Operator < (const node &rhs) { if(x==rhs.x) return y>rhs.y; return x>rhs.x; }}s[maxn+10];int main(){ int n; int h=0; while(cin>>n) { if(n==0) break; int k=1; memset(s,0,sizeof(s)); for(int i=1;i<=n;i++) { int a,b,c; cin>>a>>b>>c; s[k++]=node(a,b,c,c); s[k++]=node(a,c,b,b); s[k++]=node(b,a,c,c); s[k++]=node(b,c,a,a); s[k++]=node(c,a,b,b); s[k++]=node(c,b,a,a); } sort(s,s+k); int maxx=s[1].dp; for(int i=2;i<k;i++) { for(int j=1;j<i;j++) { if(s[j].x>s[i].x&&s[j].y>s[i].y) s[i].dp=max(s[j].dp+s[i].z,s[i].dp); if(s[i].dp>maxx) maxx=s[i].dp; } } printf("Case %d: maximum height = %d/n",++h,maxx); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲精品a级| 19禁国产精品福利视频 | 欧美乱淫| xxxxhd73国产| 911色_911色sss主站色播 | 精品国产乱码一区二区三区四区 | 国产影院在线观看 | 99视频观看| 黄色的视频免费观看 | 黄色网址在线视频 | 污片在线观看视频 | 男女生羞羞视频网站在线观看 | 暖暖免费观看高清完整版电影 | 天海翼无删减av三级在线观看 | 久久精品79国产精品 | 成人片免费视频 | 一级α片免费看 | av免费在线观看av | 欧洲精品视频在线观看 | 久久国产精品免费视频 | 91久久精品一二三区 | 蜜桃网在线观看 | 日韩精品网站在线观看 | 俄罗斯hdxxx| 黄色三级三级三级 | 欧美精品亚洲人成在线观看 | 国产精品成人一区二区三区电影毛片 | 成人免费网视频 | 毛片在线看免费 | 久久99久久98精品免观看软件 | 国产黄色录像片 | 黄视频网站免费观看 | 一区二区精品视频在线观看 | 日本在线视频免费 | 欧美成人精品h版在线观看 久久久久久三区 | 一级大片久久 | 亚洲乱码精品久久久久 | 日本一区二区高清不卡 | 俄罗斯16一20sex牲色另类 | 海外中文字幕在线观看 | 国产四区 |