题目:
地上有n个方块,每一个方块高度都是H,第i(1<=i<=n)个方块的长和宽分别为L[i],W[i]。
现在开始堆方块塔,每次可以拿一个方块放到一个方块塔上,但是有一个要求,设当前塔顶的方块长度和宽度分别为Ltop,Wtop,当前拿到的方块长度和宽度分别为Lcur,Wcur,当满足Lcur<=Ltop&&Wcur<=Wtop的时候,这个方块才能被放到塔顶,并且取代之前的塔顶成为新塔顶。
由于土地比较贵,所以想要堆出来的塔的数目尽可能少,请计算最少的塔的数目。
例如,现在有5个方块,长度和宽度分别为:( 9 , 4 ) , ( 2 , 5 ) , ( 1 , 2 ) , ( 5 , 3 ) , ( 4 , 1 )。那么最少可以堆成两座塔:( 4 , 1 ) , ( 5 , 3 ) , ( 9 , 4 )分为一堆;( 1 , 2 ) , ( 2 , 5 )分为一堆。
输入
单组测试数据。
第一行给出一个整数n (1 <= n <= 5000)。
第二行有2*n个整数L[1] , W[1] , L[2] , W[2] ,…, L[n] , W[n]。(1<=L[i],W[i]<=10000)
输出
输出一个整数,表示答案。
输入样例
样例输入1
5
4 9 5 2 2 1 3 5 1 4
输出样例
样例输出1
解法:
按照w,l的大小进行排序,每次遍历全部,每一次遍历选出来一组符合条件的块,当所有方块被选出之后则结束,遍历的次数即为ans
代码:
1 | #include<algorithm> |
ps:最近时间都很紧迫,今天差点放弃,幸亏1A了,否则现在的我已经放弃了。加油加油!!!