ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

双指针:给定两个升序数组a,b;b由a加一个值d转化而来 求d数组

2022-08-29 23:02:17  阅读:158  来源: 互联网

标签:begin int cin ai 最小值 数组 升序 指针


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 << "\n" << d << "\n";
}

标签:begin,int,cin,ai,最小值,数组,升序,指针
来源: https://www.cnblogs.com/liang302/p/16637695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有