1 条题解
-
1
简单的dp题
# include <bits/stdc++.h> using namespace std; const int N = 5e3 + 10; int n, w[N], h[N], a[N], dp[N]; int init(int p) { if (dp[p]) { return dp[p]; } dp[p] = 1; for (int i = 0; i <= n; i++) { if (w[p] < w[i] && h[p] < h[i] && dp[p] < init(i) + 1) { dp[p] = dp[i] + 1; a[p] = i; } } return dp[p]; } int main() { scanf("%d", &n); for (int i = 0; i <= n; i++) { scanf("%d%d", &w[i], &h[i]); a[i] = -1; } init(0); printf("%d\n", dp[0] - 1); for (int i = a[0]; i != -1; i = a[i]) { printf("%d ", i); } return 0; }
- 1
信息
- ID
- 7089
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 5
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者