【每日一题】YACS 243:5G通讯

题目描述

这是上海计算机学会竞赛 P 243 P243 P2435G通讯 2020 2020 2020 9 9 9月月赛 乙组 T 2 T2 T2
标签:二分查找
题意:给定 n n n个点,第 i i i个点的坐标为 x i x_i xi。给定限制 d d d,如果两点距离不超过 d d d,那么它们可以直接通讯,统计可以有多少对点可以直接通讯。( 1 < = n < = 1 0 5 , 1 < = x i , d < = 1 0 9 1<=n<=10^5,1<=x_i,d<=10^9 1<=n<=105,1<=xi,d<=109

解决方案

80 分题解:很多同学直接暴力枚举第 i i i个点前有多少个点和它的坐标距离不超过 d d d,这个写法也不错,并且因为是枚举第 i i i个点前的,还可以避免重复的情况出现(即 ( a , b ) (a,b) (a,b) ( b , a ) (b,a) b,a的情况)。但是时间复杂度是 O ( n 2 ) O(n^2) O(n2),还是会超时。
80 分代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll n, d, a[100005];

int main() {
   
    cin >> n >> d;
    for (int i = 1; i <= n; i++) cin >> a[i];

    // 排序 保证序列有序
    sort(a + 1, a + 1 + n);

    ll cnt = 0; // 直接通讯的点对数
    for (int i = 1; i <= n; i++) {
   
        for (int j = 1; j < i; j++) {
   
            if (a[i] - a[j] <= d) cnt++;
        }
    }

    cout << cnt;
    return 0;
}

题解:正解应该比较容易想到第二层 j j j循环能不能优化,想一想这层循环的逻辑其实就是想在第 i i i个数前找有多少个大于等于 a i − d a_i-d aid的数。( a i − a j < = d a_i-a_j<=d aiaj<=d转换成 a i − d < = a j a_i-d<=a_j aid<=aj),那这一部分是不是可以用二分查找去找一下。然后简单思考一下,最极端的情况是不是有 n ∗ ( n − 1 ) / 2 n*(n-1)/2 n(n1)/2个点对,会爆掉 i n t int int,得开 l o n g   l o n g long\ long long long
代码

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll n, d, a[100005];

int main() {
   
    cin >> n >> d;
    for (int i = 1; i <= n; i++) cin >> a[i];

    // 排序 保证序列有序
    sort(a + 1, a + 1 + n);

    ll cnt = 0; // 直接通讯的点对数
    for (int i = 1; i <= n; i++) {
   
        ll p = lower_bound(a + 1, a + 1 + n, a[i] - d) - a;
        cnt += i - p;
    }

    cout << cnt;
    return 0;
}

相关推荐

  1. 每日YACS 243:5G通讯

    2024-01-28 09:10:03       53 阅读
  2. 每日YACS P11:双质数

    2024-01-28 09:10:03       68 阅读
  3. 每日YACS P817:两数归零

    2024-01-28 09:10:03       55 阅读
  4. 每日YACS 473:栈的判断

    2024-01-28 09:10:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 09:10:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 09:10:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 09:10:03       82 阅读
  4. Python语言-面向对象

    2024-01-28 09:10:03       91 阅读

热门阅读

  1. npm install 一直卡在 sill idealTree 解决方案

    2024-01-28 09:10:03       52 阅读
  2. k8s Ingress部署应用

    2024-01-28 09:10:03       49 阅读
  3. gbase审计日志

    2024-01-28 09:10:03       58 阅读
  4. python连接activemq

    2024-01-28 09:10:03       51 阅读
  5. 在Vue的模块开发中使用GPT的体验及总结

    2024-01-28 09:10:03       52 阅读
  6. STM32 简易智能家居嵌入式系统设计蓝图

    2024-01-28 09:10:03       48 阅读
  7. 2-1.分支结构之switch语句

    2024-01-28 09:10:03       52 阅读
  8. day34_js

    day34_js

    2024-01-28 09:10:03      41 阅读