WA了第三个点是为什么 (恼
查看原帖
WA了第三个点是为什么 (恼
678858
ShiRoZeTsuHL卜奎BBQ!楼主2022/7/29 14:33
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e5 + 5;
int n, sum;
int dp[maxn];
struct node {
	int l, r, c;
	bool operator < (const node& b) const {
		if(l == b.l) return r < b.r;
		return l < b.l;
	}
}qj[maxn];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> n;
	sum = n;
	for(int i = 1; i <= sum; i++) {
		int l, r;
		cin >> l >> r;
		qj[i].l = l+1;
		qj[i].r = n-r;
		if(qj[i].l > qj[i].r) {
			i--; sum--;
		}
	}
	swap(sum, n);
	sort(qj+1, qj+1+n);
	for(int i = 1; i <= n; i++) {
		if(qj[i].l != qj[i-1].l || qj[i].r != qj[i-1].r) 
			qj[i].c = 1;
		else qj[i].c = qj[i-1].c + 1;
	}
	int num = n;
	for(int i = sum; i >= 1; i--) {
		dp[i] = dp[i+1];
		while(qj[num].r >= i && num) {
			dp[i] = max(dp[i], dp[qj[num].r+1] + min(qj[num].c, qj[num].r - qj[num].l+1));
			num--;
		}
	}
	cout << sum - dp[1];
	return 0;
}

2022/7/29 14:33
加载中...