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

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

    https://codeforces.ml/contest/1721/problem/C
    從n往前走
    因為對于ai 他的最大值就是他對應下面的b數組 當一個數ai的最小值和最大值都只能取這個數的時候 那么后續的數也一定不能匹配這個數
    所以弄個指針j在b數組
    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/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码