小明在电视上看到《迪斯卡威》节目正在播放俄罗斯的套娃玩具,他突然想到可以用信封来模拟该玩具。小明手上有n个信封,其中第i个信封的宽度为wi, 高度为hi。信封套娃的规则是,当信封a的宽度wa比另一个信封b的宽度wb大,并且a的高度ha也比b的高度hb大时,则信封a就可以放进信封b里面,多个信封可以层层装入,如同俄罗斯套娃一样。注意,当给定信封的宽和高以后,信封不能旋转。
现请你计算,小明手上的这n个信封,最多能选取多少个信封组成一组“最多套娃信封”玩具。
输入格式
输入文件名:x.in
第一行n,表示信封的总个数。1<=n<=10000
接下来的n+1行中,每行两个整数表示第i个信封的宽wi和高hi。1<=wi,hi<=10000
输出格式
输出文件名:x.out
一个整数,表示“最多套娃信封”玩具包含的信封个数。
说明: 不允许旋转信封。
输入/输出例子1
输入:
4
5 4
6 4
6 7
2 3
输出:
3
样例解释
最多信封个数为3,组合为[2,3] [5,4] [6,7]
这是一个二维的最长上升子序列,也就是改版的一维子序列。
先给最长子序列代码:
#include<bits/stdc++.h>
using namespace std;
int n,num[100000],dp[200000];
void lis(){
for(int i=0;i<n;i++){
dp[i]=1; //base

这篇博客介绍了如何使用C++解决一个类似于俄罗斯套娃的信封问题。给定一组信封的宽度和高度,目标是找到最多能套在一起的信封数量。这个问题可以视为二维最长上升子序列问题。博客提供了输入输出格式、样例数据及AC代码。
最低0.47元/天 解锁文章
841

被折叠的 条评论
为什么被折叠?



