_Phoebe__ 2022-01-31 15:34 采纳率: 96.9%
浏览 19
已结题

二分查找 有一个地方没有看懂 想知道怎么解释捏

P1678 烦恼的高考志愿 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/problem/P1678


#include<bits/stdc++.h>
#define N (int)1e6+5
using namespace std;
int a[N];
int score,dis;
void search(int l,int r) {
    if (a[l] >= score) {
        dis = abs(a[l] - score);
        return;
    }
    if (a[r] <= score) {
        dis = abs(a[r] - score);
        return;
    }
    if (r - l == 1) {
        dis = min(abs(a[r] - score), abs(a[l] - score));
        return;
    }
    if (l >= r) {//为什么要有这个if呢
        dis = abs(a[r] - score);
        return;
    }
    int mid = (l + r)/ 2;
    if (a[mid] > score) search(l, mid);
    else search(mid, r);
}
int main() {
    int m, n, i, ans;
    ans = 0;
    cin >> m >> n;
    for (i = 0; i < m; i++) {
        cin >> a[i];
    }
    sort(a, a + m);
    for (i = 0; i < n; i++) {
        cin >> score;
        search(0, m - 1);
        ans += dis;
    }
    cout << ans << endl;
    return 0;
}

谢谢大家

  • 写回答

1条回答 默认 最新

  • De-Chang Wang 2022-01-31 15:54
    关注

    只有一个元素的常规写法,即 l和r相等的情况

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 1月31日

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。