111

------监狱栅栏------  •  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];
}`

评论:

请先登录,才能进行评论