Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52533 | AK2022071355 | 木板游戏 | C++ | 解答错误 | 5 | 2000 MS | 8060 KB | 735 | 2022-07-19 12:40:10 |
#include <bits/stdc++.h> using namespace std; struct Wood { int l,r; } wood[500001]; int Cmp(Wood a,Wood b) { return a.l == b.l ? a.r < b.r : a.l < b.l; } int Max,i,j,longest = 1; int dp[500001]; int a[500001]; int main() { int n; scanf("%d",&n); for(i = 1;i <= n;i++) scanf("%d%d",&wood[i].l,&wood[i].r); sort(wood + 1,wood + 1 + n,Cmp); for(int i = 1;i <= n;i++) a[i] = wood[i].r,dp[i] = 1; // for(int i = 1;i <= n;i++) printf("%d\n",a[i]); for(int i = 2;i <= n;i++) { bool flag = false; for(int j = 1;j < i;j++) if(a[i] <= a[j]) dp[i] = max(dp[i],dp[j]),flag = true; if(flag) dp[i]++; } // for(int i = 1;i <= n;i++) printf("%d\n",dp[i]); printf("%d\n",dp[n]); return 0; }