二分查找方程解

解方程

https://ac.nowcoder.com/acm/problem/14416

先上模板(这是一个二分查找数的范围的模板)

        int l = 0, r = n - 1;
        while (l < r)
        {
            int mid = l + r >> 1;
            if (q[mid] >= x) r = mid;
            else l = mid + 1;
        }
    if (q[l] != x) cout << "-1 -1" << endl;
    else
    {
        cout << l << ' ';

        int l = 0, r = n - 1;
        while (l < r)
        {
            int mid = l + r + 1 >> 1;
            if (q[mid] <= x) l = mid;
            else r = mid - 1;
        }
        cout << l << endl;
    }

第一个模板是从左边查找第一个大于x的数 第二个是从右边查找第一个小于x的数
因为刚刚学会二分 一开始看到这题还有点懵 说好的二分的怎么是暴力枚举 然后借鉴了一下 别人的代码
哦~ 秒懂 原来只要二分常数(-C)做优化就行了呀
那么直接用 上面那个模板就行了
c=axx+b*x;

一秒钟就想起来了 就过来补了
yxc曾说过单调一定可以用二分 二分不是只解决单调
所以 我们在处理之前还是需要 sort()一下

bool find(int c)
{
        int l = 0, r = n - 1;
        while (l < r)
        {
            int mid = l + r >> 1;
            if (q[mid] >= x) r = mid;
            else l = mid + 1;
        }
        if(q[i]==c)
        return true;
        else
        return false;
}
全部评论

相关推荐

03-13 20:28
已编辑
门头沟学院 Java
已经一年没发牛客了,为什么呢,因为没脸发...&nbsp;一年前的我自认为在25届中技术一流,八股无敌,项目出色,但是一年校招的蹉跎让我差点转行。24年春招收割了十几个实习&nbsp;offer&nbsp;之后我去了某家大厂实习到9月份转正失败,那时候的我还没有意识到噩梦将来,7月因为投秋招提前批没反馈,于是开始投了几个实习转正岗位练手又拿了3个中大厂&nbsp;offer,这时的我沉浸在我自以为是的骄傲里。9月秋招正式批开始后我几乎把我能找到的所有的岗位都投了一遍,只收获了大厂海笔,0面试。10月份第一家给我面试的公司是数字马力(蚂蚁的内包),诚恳的说,当时收到这家面试是嚣张的,觉得我拿这个&nbsp;offer&nbsp;如探囊取物,就当个保底吧。...
中街牛奶提子:是啊,不应该在秋招的时候继续投实习岗。也劝26届的,八月末后,实习岗就不应该投,给人错误的行情认知。佬是学院本,觉得约面难,双非何尝不是一样呢,秋招战场的激烈和实习完全不同。当时我秋招的时候也是边面实习,当时面实习面一个过一个觉得自己很优越,觉得能收获一堆实习offer那秋招肯定也行。为什么要在秋招拿一堆实习offer增强自己所谓的虚荣心,当时就是贱,为了所谓的攀比虚荣心
点赞 评论 收藏
分享
评论
10
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务