力扣3464. 正方形上的点之间的最大距离

news/2025/2/25 14:28:29

力扣3464. 正方形上的点之间的最大距离

题目

在这里插入图片描述

题目解析及思路

题目要求在points集合中找出k个点,k个点之间的最小的曼哈顿距离的最大值

最大最小值的题一般直接想到二分

将正方形往右展开成一条线,此时曼哈顿距离为两点直线距离**(仅起点右边的点)**

枚举起点二分答案,每次用二分找到>= st + mid的最近的点

代码

class Solution {
public:
    int maxDistance(int side, vector<vector<int>>& points, int k) {
        vector<long long> a;
        for(auto& p:points){
            int x = p[0],y = p[1];
            if (x == 0) {
                a.push_back(y);
            } else if (y == side) {
                a.push_back(side + x);
            } else if (x == side) {
                a.push_back(side * 3LL - y);
            } else {
                a.push_back(side * 4LL - x);
            }
        }

        ranges::sort(a);

        auto check = [&](int mid)->bool{
            //枚举起点
            for(long long st : a){
                //最右边的点的边界,当坐标超过边界时,该点与起点的距离已经<mid了,不满足条件
                long long end = side * 4LL + st - mid;
                long long cur = st;
                //找剩下k-1个点
                for(int i=0;i<k-1;i++){
                    auto it = ranges::lower_bound(a,cur+mid);
                    if(it == a.end() || *it > end){
                        cur = -1;
                        break;
                    }
                    cur = *it;
                }
                if(cur > 0){
                    return true;
                }
            }
            return false;
        };
        int l = 1,r = side+1;
        while(l+1 < r){
            int mid = l + (r - l) / 2;
            if(check(mid)) l = mid;
            else r = mid;
        }
        return l;
    }
};

http://www.niftyadmin.cn/n/5865607.html

相关文章

线性模型 - 支持向量机(参数学习)

支持向量机的主优化问题为凸优化问题&#xff0c;满足强对偶性&#xff0c;即主优化问题可以 通过最大化对偶函数来求解。对偶函数是一个凹函数&#xff0c;因此最大化对偶函数是一个凸优化问题&#xff0c;可以通过多种凸优化方法来进行求解&#xff0c;得到拉格朗日乘数的最优…

ubuntu20.04音频aplay调试

1、使用指定声卡&#xff0c;aplay 播放命令 aplay -D plughw:1,0 test2.wav2、 录音 arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav3、各个参数含义 -D 指定声卡编号 plughw:0,0 //0,0代表card0,device0&#xff0c;可以通过arecord -l获取 -f 录音格式 S16_LE…

Java 集合框架大师课:集合流式编程革命(三)

&#x1f680; Java 集合框架大师课&#xff1a;集合流式编程革命&#xff08;三&#xff09; &#x1f525; 系列成就&#xff1a;集合框架战力值突破 90%&#xff01;建议边撸代码边循环《孤勇者》进入心流状态 &#x1f3a7; 第一章&#xff1a;流式编程总动员 1.1 现实中的…

深入剖析:基于红黑树实现自定义 map 和 set 容器

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 在 C 标准模板库&#xff08;STL&#xff09;的大家庭里&#xff0c;map和set可是超级重要的关联容器成员呢&#x1f60e;&#x…

vscode如何使用鼠标滚轮调整字体大小

1.打开设置 2.搜索Font Ligatures 3.编辑配置文件 4.修改代码并保存 修改前 修改后 在最后一行添加&#xff1a;“editor.mouseWheelZoom”: true 记得在上一行最后&#xff0c;加上英文版的“,”逗号 5.配置成功&#xff0c;再次按Ctrl鼠标滚轮便可以缩放了。

【Jenkins】显示 HTML 标签

需求 在 Jenkins 中显示 HTML 标签内容&#xff08;例如格式化的文本、颜色、图标等&#xff09;是一个常见的需求&#xff0c;如下&#xff0c;编译工程显示当前编译的分支&#xff1a; 但 Jenkins 默认会出于安全考虑&#xff08;防止 XSS 攻击&#xff09;转义 HTML 标签&a…

蓝桥杯试题:区间次方和(前缀和)

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…

三七互娱游戏策划岗内推

【游戏策划】【美术设计】【市场推广】【游戏运营类】【技术开发】 1、协助完成战斗体验设计&#xff0c;包括动作、特效、镜头等&#xff1b; 2、负责战斗资源的需求文档撰写&#xff0c;对最终的战斗表现和打击感负责&#xff1b; 3、协助完成职业的设计与制作&#xff0c…