- [USACO 4.3] Buy Low, Buy Lower 逢低吸纳
code
- @ 2026-2-11 10:59:52
void solve() {
int n;
cin >> n;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) cin >> a[i];
reverse(a.begin() + 1, a.end());
const int inf = 1e9;
vector<ll> dp(n + 1, -inf), f(n + 1);
f[0] = 1, dp[0] = 0;
ll res = 0;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
if (a[j] < a[i]) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
for (int j = i - 1; j >= 0; j--) {
if (a[j] == a[i]) break;
if (a[j] < a[i] && dp[j] == dp[i] - 1) {
f[i] += f[j];
}
}
res = max(res, dp[i]);
}
cout << res << ' ';
ll sum = 0;
for (int i = 1; i <= n; i++) if (dp[i] == res) sum += f[i];
cout << sum << '\n';
}
0 条评论
目前还没有评论...
信息
- ID
- 448
- 时间
- ms
- 内存
- MiB
- 难度
- 7
- 标签
- 递交数
- 23
- 已通过
- 8
- 上传者