分析
因为是单行道, 不发生碰撞的条件是并且
那么只需要将车按照位置排序, 然后计算最长不下降子序列即可
因为, 需要贪心 + 二分优化
计算
代码实现
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int N = 1e5 + 10, MOD = 998244353;
int n;
struct F {
int x, v;
bool operator< (const F f) const {
return x < f.x;
}
} w[N];
LL f[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i) {
int x, v;
cin >> x >> v;
w[i] = {x, v};
}
sort(w + 1, w + n + 1);
int len = 0;
for (int i = 1; i <= n; ++i) {
int l = 0, r = len;
while (l < r) {
int mid = l + r + 1 >> 1;
if (f[mid] <= w[i].v) l = mid;
else r = mid - 1;
}
len = max(len, l + 1);
f[l + 1] = w[i].v;
}
cout << n - len << '\n';
return 0;
}

京公网安备 11010502036488号