Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52403 | AK2022071336 | 木板游戏 | C++ | 运行超时 | 20 | 2000 MS | 5908 KB | 895 | 2022-07-19 12:08:17 |
#include <bits/stdc++.h> using namespace std; const int N = 5e5 + 10; int n, vis[N], ans, tl = 1e9 + 10, tr; struct rage { int l, r; bool operator < (const rage &B) const { return r - l > B.r - B.l; } }blk[N]; void dfs(int u, int dpth) { vis[u] = 1; int fl = blk[u].l, fr = blk[u].r, flg = 1; for(int i = u + 1; i <= n; i++) { if(blk[i].l >= fl and blk[i].r <= fr) { flg = 0; dfs(i, dpth + 1); } } if(flg) ans = max(dpth, ans); return; } int main () { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d%d", &blk[i].l, &blk[i].r); tl = min(tl, blk[i].l); tr = max(tr, blk[i].r); } sort(blk + 1, blk + n + 1); blk[0].l = tl, blk[0].r = tr; dfs(0, 0); printf("%d\n", ans); return 0; }