题解 | #马戏团#
马戏团
https://www.nowcoder.com/practice/c2afcd7353f84690bb73aa6123548770
#include <algorithm> #include <iostream> #include <vector> #include <algorithm> using namespace std; bool com_w(vector<int> p1,vector<int> p2) { //按照体重从小到大排序 if(p1[0]!= p2[0]) return p1[0] <= p2[0]; //在体重相等的条件下,身高高的在前(在上) else return p1[1]>p2[1]; } int main() { int N; while(cin>>N){ int maxx = 0; vector<vector<int>>nums; int useless; for(int i = 0;i<N;i++) { vector<int> pe(2,0); cin>>useless>>pe[0]>>pe[1]; nums.push_back(pe); } vector<int> dp(N,1); sort(nums.begin(), nums.end(),com_w); /*for(int i = 0;i<N;i++) { cout<<nums[i][0]<<' '<<nums[i][1]<<endl; } */ dp[0] = 1; for(int i = 1 ;i<N;i++) { for(int j =i-1;j>=0;j--) { if(nums[i][1]>=nums[j][1]) { dp[i] = max(dp[i],dp[j]+1); } } maxx = dp[i]>maxx?dp[i]:maxx; } cout<<maxx<<endl; } }