题解 | #信封嵌套#

信封嵌套

https://www.nowcoder.com/practice/25fe1fc89c4c4e82bbc63df04bc6ca30

#include <algorithm>
#include <iostream>
#include<vector>
#include<cstring>
using namespace std;
int main() {
    int n;
    cin >> n;
    int f[n];
    vector<pair<int, int>> e(n);
    for(int i = 0; i < n; i ++) cin >> e[i].first >> e[i].second;
    sort(e.begin(), e.end(),[](const pair<int, int>& a, const pair<int, int>& b){
        if(a.first == b.first) return a.second > b.second;
        return a.first < b.first;
    });
    e.erase(unique(e.begin(),e.end()), e.end());
    n = e.size();
    for(int i = 0; i < n; i ++) f[i] = 1;
    int maxN = 1;
    for(int i = 1; i < n; i ++){
        for(int j = 0; j < i; j ++){
            if(e[j].second < e[i].second)
                f[i] = max(f[j] + 1, f[i]);
        }
        if(f[i] > maxN) maxN = f[i];
    }
    cout << maxN << endl;
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务