题解 | #信封嵌套#
信封嵌套
https://www.nowcoder.com/practice/25fe1fc89c4c4e82bbc63df04bc6ca30
#include <iostream> #include<algorithm> using namespace std; struct evl{ int len; int wid; }; bool comp(evl e1,evl e2){ return e1.len<e2.len; } int main() { int n; scanf("%d",&n); evl arr[2010]; for(int i=0;i<n;i++){ scanf("%d %d",&arr[i].len,&arr[i].wid); } sort(arr,arr+n,comp); int dp[2010]; fill(dp,dp+n,1); int maxdp=1; for(int i=1;i<n;i++){ for(int j=0;j<n;j++){ if(arr[i].len>arr[j].len&&arr[i].wid>arr[j].wid) dp[i]=max(dp[i],dp[j]+1); } maxdp=max(dp[i],maxdp); } printf("%d",maxdp); } // 64 位输出请用 printf("%lld")