#include <iostream> (30316)#include <algorithm> #include <vector> using namespace std; const int maxn = 3010; struct Node { int l; int w; int h; }; struct Node e[maxn]; int n; int res = 0; int main() { cin >> n; int dp[maxn]; for (int i = 0; i < n; i++) { cin >> e[i].l >> e[i].w >> e[i].h; } sort(e, e + n, [](Node x, Node y) { if (x.l == y.l) { return x.w > y.w; } else { return x.l > y.l; } }); for (int i = 0; i < n; i++) dp[i] = e[i].h; //dp[i] [0,i]的最大高度 // cout << e[0].l; // dfs(0, maxn, maxn, 0, allH); for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { if (/*i != j &amp;&amp; */e[i].l < e[j].l &amp;&amp; e[i].w < e[j].w) { dp[i] = max(dp[i], dp[j] + e[i].h); } res = max(res, dp[i]); } } cout << res; return 0; } // 64 位输出请用 printf("%lld")