------监狱栅栏------ • 1个月前
`
#include<iostream>
#include<unordered_map>
using namespace std;
unordered_map<int, int> g[100001];
int dp[100001];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int a, b;
cin >> a >> b;
int left = b + 1, right = n - a;
if (left <= right) g[right][left]++;
}
for (int i = 1; i <= n; i++) {
dp[i] = dp[i - 1];
for (auto p : g[i]) {
dp[i] = max(dp[i], dp[p.first - 1] + min(p.second, i - p.first + 1));
}
}
cout << n - dp[n];
}`
评论:
请先登录,才能进行评论