D. 夹缝中求和

夹缝中求和

https://ac.nowcoder.com/acm/contest/8997/D

D. 夹缝中求和

的数据只能是以下的复杂度,排序已经到,那么查找数就得是或者为

  • 就是最容易想到的二分法,用STL的即可,不等式即为
    #include<bits/stdc++.h>
    using namespace std;
    #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    #define ll long long
    const int N = 1e5 + 10;
    ll n, cnt;
    ll x, y;
    ll a[N];
    int main()
    {
      IOS;
      cin >> n >> x >> y;
      for(int i = 1; i <= n; i++) cin >> a[i];
      sort(a + 1, a + 1 + n);
      for(int i = 1; i <= n; i++){
          int l = lower_bound(a + i + 1, a + n + 1, x - a[i]) - a;
          int r = upper_bound(a + i + 1, a + n + 1, y - a[i]) - a;
          cnt += (r - l);
      }
      cout << cnt << endl;
    }
全部评论
大佬,你这个会不会让a[i]也在这个范围内,就不满足i
点赞 回复 分享
发布于 2020-11-30 21:51
为什么不是加 r-l+1呢
点赞 回复 分享
发布于 2020-12-01 21:08
那这个是考虑了i和j相等的情况嘛
点赞 回复 分享
发布于 2020-12-01 23:42

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务