0 分求助
查看原帖
0 分求助
677234
FstAutoMaton楼主2023/11/28 20:33

和 std 拍了几分钟了,但交上去还是 0 分。

#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 1e5 + 5;

struct A {
  int x, y;
} a[kMaxN];

int b[kMaxN], f[kMaxN], n, ans;
map<int, int> mp;
vector<int> v[kMaxN];

void DP(int x) {
  mp.clear();
  for (int i = 0; i < v[x].size(); i++) {
    int s = v[x][i];
    f[i + 1] = mp[s - 1] + 1;
    mp[s] = max(mp[s], f[i + 1]);
    ans = max(ans, f[i + 1]);
  }
}

int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].x >> a[i].y;
    b[i] = a[i].x;
  }
  sort(b + 1, b + n + 1);
  int t = unique(b + 1, b + n + 1) - b - 1;
  for (int i = 1; i <= n; i++) {
    a[i].x = lower_bound(b + 1, b + t + 1, a[i].x) - b;
    v[a[i].x].push_back(a[i].y);
  }
  for (int i = 1; i <= t; i++) {
    sort(v[i].begin(), v[i].end());
    DP(i);
  }
  cout << n - ans;
  return 0;
}
2023/11/28 20:33
加载中...