當前位置:首頁 > IT技術 > 編程語言 > 正文

雙指針:給定兩個升序數(shù)組a,b;b由a加一個值d轉化而來 求d數(shù)組
2022-08-30 00:02:41

https://codeforces.ml/contest/1721/problem/C
從n往前走
因為對于ai 他的最大值就是他對應下面的b數(shù)組 當一個數(shù)ai的最小值和最大值都只能取這個數(shù)的時候 那么后續(xù)的數(shù)也一定不能匹配這個數(shù)
所以弄個指針j在b數(shù)組
ai只能在bi里面通過二分找最小值 然后 到達bj這個點

void solve() {
  int n;
  cin >> n;
  vector<int> a(n), b(n), c(n), d(n);
  cin >> a >> b;

  int j = n - 1;
  for (int i = n - 1; i >= 0; i--) {
    int x = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
    c[i] = b[x] - a[i];
    d[i] = b[j] - a[i];

    if (x == i) {
      j = i - 1;
    }
  }
  cout << c << "
" << d << "
";
}

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >