Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52489 | Scorpio | 木板游戏 | C++ | 运行超时 | 20 | 3035 MS | 260 KB | 732 | 2022-07-19 12:20:48 |
#include<bits/stdc++.h> using namespace std; struct node{ int l, r; }; node a[405]; int n, ans, max_r; bool cmp(node a, node b){ int flga = a.r - a.l + 1; int flgb = b.r - b.l + 1; if(flga == flgb){ return a.l < b.l; } return flga > flgb; } void DFS(int layer, int L, int R, int cnt){ for(int i = layer + 1; i <= n; i++){ if(L <= a[i].l && a[i].r <= R){ if(ans >= cnt + (n - i + 1)){ break; } DFS(i, a[i].l, a[i].r, cnt + 1); } } ans = max(ans, cnt); return; } int main(){ cin >> n; for(int i = 1; i<= n; i++){ cin >> a[i].l >> a[i].r; max_r = max(a[i].r, max_r); } sort(a + 1, a + n + 1, cmp); DFS(0, 0, max_r, 0); cout << ans << endl; return 0; }