建造高塔(codevs 1689)

2022-05-14 18:24:07 字數 1165 閱讀 6114

題目描述 description

n有n種石塊,石塊能無限**。每種石塊都是長方體,其中第i種石塊的長、寬、高分別為li、wi、hi。石塊可以旋轉,使得其中兩維成為長度和寬度,第三維成為高度。如果要把乙個石塊放在另乙個石塊上面,必須保證上面石塊的長和寬都分別嚴格小於下面石塊的長和寬。這意味著,即使兩塊長寬相同的石塊也不能堆砌起來。

現在神犇想知道,最多能用上多少塊石頭呢?

輸入描述 input description

第一行,n; 

以下n行,每行三個數,表示第i種石頭的長寬高。

輸出描述 output description

乙個整數,表示最多能用上多少塊石頭。

樣例輸入 sample input

3
1 1 1
2 2 2
3 3 4
樣例輸出 sample output

資料範圍及提示 data size & hint

n≤50000,其餘數字≤maxlongint。

/*

二分的最長嚴格上公升子串行,因為是嚴格的,所以按照a排序時,b要從大

到小排,曾經試過二維的,但怎麼改都不對。

*/#include

#include

#include

#define m 300010

using

namespace

std;

intf[m],cnt;

struct

node

;node e[m];

intn;

bool cmp(const node&x,const node&y)

int erfen(int l,int r,int

x)

returnl;}

intmain()

sort(e+1,e+cnt+1

,cmp);

f[1]=e[1].b;int len=1

;

for(int i=2;i<=cnt;i++)

if(e[i].b>f[len])

f[++len]=e[i].b;

else

printf("%d

",len);

return0;

}

view code

codevs 3185 佇列練習1

題目描述 description 給定乙個佇列 初始為空 只有兩種操作入隊和出隊,現給出這些操作請輸出最終的隊頭元素。操作解釋 1表示入隊,2表示出隊 輸入描述 input description n 操作個數 n個操作 如果是入隊則後面還會有乙個入隊元素 具體見樣例 輸入保證隊空時不會出隊 輸出描...

codevs 3185 佇列練習1

題目描述 description 給定乙個佇列 初始為空 只有兩種操作入隊和出隊,現給出這些操作請輸出最終的隊頭元素。操作解釋 1表示入隊,2表示出隊 輸入描述 input description n 操作個數 n個操作 如果是入隊則後面還會有乙個入隊元素 具體見樣例 輸入保證隊空時不會出隊 輸出描...

codevs3110二叉堆練習1

題目描述 description 給定n n 500,000 和n個整數 較有序 將其排序後輸出。輸入描述 input description n和n個整數 輸出描述 output description n個整數 公升序 樣例輸入 sample input 512 11 10 8 9 樣例輸出 s...