贪心问题集

news2024/9/23 17:47:54

常见问题分类:

1)区间问题

2)Huffman

3)排序不等式

4)绝对值不等式

5)推公式

 一、区间问题

板子:

①区间选点问题

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
struct Range{
    int l, r;
    bool operator< (const Range& b) const{
        return r < b.r;
    }
}range[N];
int main(){
    int n;  cin >> n;
    int res = 0;
    for(int i = 0; i < n; i ++){
        int l, r;   cin >> l >> r;
        range[i] = {l , r};
    }
    sort(range, range + n);
    int p = -2e9;
    for(int i = 0; i < n; i ++)
        if(p < range[i].l){
            res ++;
            p = range[i].r;
        }
    cout << res;
    return 0;
}

②区间分组

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int N = 1e5 +10;
struct Range{
    int l, r;
    bool operator<(const Range& b)const {
        return l < b.l;
    }
}range[N];

int n;

int main(){
    cin >> n;  
    priority_queue<int, vector<int>, greater<int>>  heap;   // 小根堆
    for(int i = 0; i < n; i ++){
        int l, r;   cin >> l >> r;
        range[i] = {l, r};
    }
    sort(range, range + n);
    for(int i = 0; i < n; i ++){
        if(heap.empty() || heap.top() >= range[i].l){
            heap.push(range[i].r);
        }else{  // 直接接到最先结束的队伍后面
            heap.pop();
            heap.push(range[i].r);
        }
    }
    cout << heap.size();
    return 0;
}

③区间覆盖问题

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
struct Range{
    int l, r;
    bool operator<(const Range& b) const {
        return l < b.l;
    }
}range[N];

int n, res;
int st, ed;

int main(){
    cin >> st >> ed;
    cin >> n;
    for(int i = 0; i < n; i ++){
        int l, r;   cin >> l >> r;
        range[i] = {l, r};
    }
    sort(range, range + n);
    
    bool success = false;
    for(int i = 0; i < n; i ++){
        int j = i, r = -2e9;  // j从当前下标开始找,贪心到r最远能到的区间
        while(j < n && range[j].l <= st){   // 能接得上
            r = max(r, range[j].r);         // 求出在接得上的前提下能够到达的最远距离
            j ++;
        }
        
        if(r < st){                         //在接得上的前提下能够到达的最远距离小于上一个线段的末尾
            res = -1;   break;              // 则说明无法覆盖
        }
        res ++;
        if(r >= ed){
            success = true;
            break;
        }
        i = j - 1;
        st = r;
    }
    if(!success)    res = -1;
    cout << res;
    return 0;
}

 Leetcode 3111.覆盖所有点的最少矩形数目

class Solution {
public: 
    int minRectanglesToCoverPoints(vector<vector<int>>& points, int w) {
        int n = points.size();
        long long res = 0;
        sort(points.begin(), points.end(), [&](const vector<int>& a, const vector<int>& b) -> bool{
            return a[0] < b[0];
        });     // 按照x坐标进行排序
        int st = points[0][0];
        int cur_l = st, cur_r = cur_l + w;  res ++;
        for (int i = 0; i < n; i ++){
            if (points[i][0] <= cur_r)  continue;
            // 否则需要新开一个区间
            cur_r = points[i][0] + w;   res ++;
        }
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1964167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法 01】快速排序算法与分治思想

深入理解快速排序与分治思想 在算法的世界里&#xff0c;快速排序以其高效的性能著称&#xff0c;它巧妙地运用了分治策略&#xff08;Divide and Conquer&#xff09;&#xff0c;将复杂的排序问题逐步分解为更小的子问题&#xff0c;直至问题变得足够简单&#xff0c;从而轻…

永劫无间:游戏模式操作,云手机游戏辅助教程!

在《永劫无间》中&#xff0c;快速比赛模式和无间模式是提升实力和展示技巧的重要途径。以下是详细的攻略建议&#xff0c;帮助玩家在游戏中取得更好的成绩。 快速比赛模式 快速比赛模式与排位赛的玩法内容一致&#xff0c;但对局结果不会影响你的段位积分和英雄积分&#xff…

昇思 25 天学习打卡营第 25 天 | MindSpore Diffusion 扩散模型

1. 背景&#xff1a; 使用 MindSpore 学习神经网络&#xff0c;打卡第 25 天&#xff1b;主要内容也依据 mindspore 的学习记录。 2. Diffusion 介绍&#xff1a; Diffusion也是从纯噪声开始通过一个神经网络学习逐步去噪&#xff0c;最终得到一个实际图像。 具体的 Diffusi…

二进制部署k8s集群之CoreDNS部署及多master节点负载均衡以及高可用(下)

目录 1.部署 CoreDNS 2.在master01节点基础上&#xff0c;完成master02节点部署 3.部署nginx做负载均衡器 4.部署keepalived做高可用 1.部署 CoreDNS CoreDNS&#xff1a;CoreDNS 是 Kubernetes 的默认 DNS 实现。可以为 K8S 集群内的 Pod 提供 DNS 服务。 使用 CoreDNS 可…

【C++BFS】1162. 地图分析

本文涉及知识点 CBFS算法 LeetCode1162. 地图分析 你现在手里有一份大小为 n x n 的 网格 grid&#xff0c;上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋&#xff0c;1 代表陆地。 请你找出一个海洋单元格&#xff0c;这个海洋单元格到离它最近的陆地单元格的距…

67.利用FreeLibrary函数实现无痕注入的核心代码

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;66.FreeLibrary隐藏模块 以 65.破坏特征码防止内存定位查杀 它的代码为基础进行修改 效…

前端实现文本超出指定行数显示”展开”和”收起”效果

目录 效果演示步骤一&#xff1a;实现整体框架步骤二&#xff1a;实现样式步骤三&#xff1a;js实现元素控制完整代码 效果演示 本文方法是利用js原生进行实现的&#xff0c;可根据相关vue或react语法进行相关的改写&#xff0c;并实现效果 步骤一&#xff1a;实现整体框架 <…

今天分享分享缓冲器小故事

在一个繁华都市的角落&#xff0c;有一家小小的修理铺。铺子里堆满了各种老旧的机械零件和工具&#xff0c;而铺子的主人是一位名叫老陈的工匠。 老陈手艺精湛&#xff0c;尤其擅长修理那些复杂而精密的机械。但他的铺子生意却一直不温不火&#xff0c;因为在这个快节奏的时代…

⌈ 传知代码 ⌋ 使用稀疏查询进行3D目标检测

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

Linux基础知识之Shell命令行及终端中的快捷键

1.察看历史命令快捷键 按键 操作 ctrl p 返回上一次输入命令字符 ctrl n 返回下一次输入命令字符 ctrl r 输入单词甚至词组搜索匹配历史命令 alt p 输入字符查找与字符相接近的历史命令 alt . 向之前执行的命令的最后一个参数轮循, 并将之添加到当前光标之后…

WPF数据绑定对象Binding中的辅助属性

以下案例使用的统一的数据源&#xff1a; public class Data{public string Value { get; set; } "123";public int IntValue { get; set; } 100;public float FloatValue { get; set; } 0.114f;public DateTime DateTimeValue { get; set; } DateTime.Now;publi…

《品牌与观察》深度剖析:格行如何成为随身WiFi行业标杆?如何成为排名第一名随身WiFi?央视推荐的随身WiFi!官方认证的随身WiFi!

在随身WiFi行业乱象频发的背景下&#xff0c;格行以一股清流之姿&#xff0c;毅然决然地选择了一条“难而正确”的道路——大力发展线下门店&#xff0c;发展续航技术以品质和服务重塑市场格局。格行现已宣布其线下合作门店已突破万家&#xff0c;并且续航技术已经遥遥领先于其…

计算机毕业设计选题推荐-医疗废物管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

思科认证有哪些?有什么区别?选哪个比较好?考试多少钱?

思科认证体系庞大且全面&#xff0c;涵盖了从基础到高级的多个方向和等级。那么&#xff0c;思科认证究竟有哪些?有什么区别?选哪个比较好?考试多少钱&#xff1f;下面将为您一一揭晓。 思科认证有哪些? 思科认证体系丰富多样&#xff0c;涵盖了从基础到高级的多个层次和…

AI助力工艺|利用机器学习实现泡沫浮选工艺优化

浮选是一种矿物处理过程&#xff0c;它利用矿物颗粒的自然疏水性或通过添加化学试剂使其变得疏水&#xff0c;从而使它们能够附着在空气泡上&#xff0c;从矿浆中分离出来。在处理铁矿石时&#xff0c;浮选过程特别重要&#xff0c;因为它可以帮助减少二氧化硅&#xff08;SiO2…

【数据结构】——堆的实现与算法

目录 一、堆的实现 1.1堆数据的插入 1.2堆数据的删除 二、建堆算法 2.1向上调整建堆 2.2向下调整建堆 三、堆的应用 3.1堆排序 3.2Top—K问题 一、堆的实现 1.1堆数据的插入 插入一个数据后不再是小堆需要将新数据调整到合适的位置&#xff0c;所以堆的插入就是在数组…

永结无间Ⅷ--释放机器学习“百万专家组合”的力量

介绍 随着人们对特定领域模型和小型语言模型的兴趣日益浓厚&#xff0c;对于能够利用专门数据有效处理特定领域中大量专门任务请求的模型的需求比以往任何时候都更加迫切。 传统模型往往难以实现可扩展性和适应性&#xff0c;因此研究人员开始探索新的创新方法。DeepMind的“…

【课程系列10】某乎AI大模型全栈工程师-第5期

网盘链接 链接&#xff1a;https://pan.baidu.com/s/1ZC-fOC_QQjNM6wyVjQcYOg --来自百度网盘超级会员v6的分享 课程目标 ✅学大模型来干什么&#xff1f;&#xff1a; &#x1f449;想提升薪资&#xff0c;提升效率 &#x1f449;想私有化部署垂直领域大模型 &#x1f449…

误删文件怎么恢复?电脑误删文件恢复,5个方法深度解析(超实用)

在日常使用电脑的过程中&#xff0c;相信很多小伙伴们都曾经遇到过一个普遍又棘手的问题——误删文件。无论是因为手快便捷还是不慎操作&#xff0c;误删文件似乎总是那么糟心&#xff0c;让人十分困扰。然而&#xff0c;当我们面对这一问题时&#xff0c;我们并不必过分担心。…