当前位置: 首页 > news >正文

【算法学习之路】5.贪心算法

贪心算法

  • 前言
  • 一.什么是贪心算法
  • 二.例题
    • 1.合并果子
    • 2.跳跳!
    • 3. 老鼠和奶酪

前言

我会将一些常用的算法以及对应的题单给写完,形成一套完整的算法体系,以及大量的各个难度的题目,目前算法也写了几篇,题单正在更新,其他的也会陆陆续续的更新,希望大家点赞收藏我会尽快更新的!!!

一.什么是贪心算法

总是只看眼前,并不考虑以后可能造成的影响,将一个最优决策变成多步决策过程,并在每步总是做出当前看起来是最好的选择,它所做的选择只是在某种意义上的局部最优选择可想而知,并不是所有的时候贪心法都能获得最优解,所以一般使用贪心法的时候,都要确保自己能证明其正确性。

二.例题

1.合并果子

洛谷P1090 [NOIP 2004 提高组] 合并果子
在这里插入图片描述

//使用优先队列解决
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;int main() {priority_queue<int, vector<int>, greater<int>>p;//定义一个优先队列且为小顶堆int n; cin >> n;for (int i = 0; i < n; i++) {//将每个数据填入优先队列int a; cin >> a;p.push(a);}int sum = 0;//需要体力的总值while (p.size() > 1) {//当元素只有一个的时候意味着结束//将最小的两个取出来进行合并int first = p.top();p.pop();int last = p.top();p.pop();//将合并的结果填入优先队列int t = first + last;sum += t;p.push(t);}cout << sum;return 0;
}

2.跳跳!

洛谷P4995 跳跳!
在这里插入图片描述

//用列表解决
#include <iostream>
#include <list>
#include <cstdlib>
using namespace std;int main() {list<long long> s;//由于数据过大,需要用到long longint n; cin >> n;for (int i = 0; i < n; i++) {//将所有数据填入列表long long a; cin >> a;s.push_back(a);}s.sort();//将列表进行排序long long sum = 0;//消耗的总体力值long long first = 0;long long last = 0;while (s.size() > 0) {//当没有元素结束last = s.back();s.pop_back();sum += (last - first) * (last - first);if (s.size() > 0) {//如果元素是奇数first = s.front();s.pop_front();sum += (last - first) * (last - first);}}cout << sum;return 0;
}

3. 老鼠和奶酪

力扣2611. 老鼠和奶酪
在这里插入图片描述

static int cmp(const void* pa, const void* pb) {//比较函数return *(int *)pa - *(int *)pb;
}int miceAndCheese(int* reward1, int reward1Size, int* reward2, int reward2Size, int k) {int sum = 0;//总值int diff[reward1Size];//两只老鼠的差值for(int i = 0; i < reward1Size; i++){sum += reward2[i];//先将所有的奶酪给第二只老鼠吃diff[i] = reward1[i] - reward2[i];//计算出两个老鼠的差值}qsort(diff, reward1Size, sizeof(int), cmp);//将差值排序for(int i = 1; i <= k; i++){sum += diff[reward1Size - i];//将差值填入总数}return sum;
}

相关文章:

【算法学习之路】5.贪心算法

贪心算法 前言一.什么是贪心算法二.例题1.合并果子2.跳跳&#xff01;3. 老鼠和奶酪 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也写了几篇&#xff0c;题单正在更新&#xf…...

如何打造一个安全稳定的海外社媒账号?

您好&#xff01;随着TikTok、Instagram、Facebook等海外社媒平台的迅猛发展&#xff0c;越来越多的个人和企业希望借助这些平台实现全球化传播。然而&#xff0c;注册和运营海外社媒账号的过程中&#xff0c;许多人频繁遭遇到封禁、限制和账号关联等问题&#xff0c;常常导致严…...

【Python 数据结构 5.栈】

目录 一、栈的基本概念 1.栈的概念 2.入栈 入栈的步骤 3.出栈 出栈的步骤 4.获取栈顶元素 获取栈顶元素的步骤 二、 Python中的栈 顺序表实现 链表实现 三、栈的实战 1.LCR 123. 图书整理 I 思路与算法 2.LCR 027. 回文链表 思路与算法 3.1614. 括号的最大嵌套深度 思路与算法 …...

Qt开发⑪Qt网络+Qt音视频_使用实操

目录 1. Qt 网络 1.1 UDP Socket 1.2 TCP Socket 1.3 HTTP Client 2. Qt 音视频 2.1 Qt 音频 2.2 Qt 视频 本篇完。 1. Qt 网络 和多线程类似&#xff0c;Qt 为了支持跨平台, 对网络编程的 API 也进行了重新封装。 实际 Qt 开发中进行网络编程&#xff0c;也不一定使用…...

JavaEE--计算机是如何工作的

一、一台计算机的组成部分 1.CPU&#xff08;中央处理器&#xff09; 2.主板&#xff08;一个大插座&#xff09; 3.内存&#xff08;存储数据的主要模板&#xff09; 4.硬盘&#xff08;存储数据的主要模板&#xff09; 内存和硬盘对比&#xff1a; 内存硬盘读写速度快慢存…...

API接口:企业名称、注册号、统一社会信用代码、企业类型、成立日期和法定代表人等数据 API 接口使用指南

API接口&#xff1a;企业名称、注册号、统一社会信用代码、企业类型、成立日期和法定代表人等数据 API 接口使用指南 本文详细介绍一种基于 Web 搜索方式实现的企业信息查询接口&#xff0c;适用于数据补全、企业资质验证、信息查询等场景。文章内容涵盖接口功能、请求参数、返…...

微信小程序text组件decode属性的小问题

今天学习微信小程序的text组件&#xff0c;这个组件类似于网页制作中的span标签&#xff0c;内联文本只能用 text 组件&#xff0c;不能用 view&#xff0c;如 foo bar </text。 text组件常用属性如下表&#xff1a; 属性说明user-select文本是否可选&#xff0c;该属性会使…...

【计算机网络入门】初学计算机网络(九)

目录 1.令牌传递协议 2. 局域网&IEEE802 2.1 局域网基本概念和体系结构 3. 以太网&IEEE802.3 3.1 MAC层标准 3.1.1 以太网V2标准 ​编辑 3.2 单播广播 3.3 冲突域广播域 4. 虚拟局域网VLAN 1.令牌传递协议 先回顾一下令牌环网技术&#xff0c;多个主机形成…...

LeetCode 974:和可被 K 整除的子数组

974. 和可被 K 整除的子数组 - 力扣&#xff08;LeetCode&#xff09; 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的非空 子数组 的数目。 子数组 是数组中 连续 的部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k …...

vector习题

完数和盈数 题目 完数VS盈数_牛客题霸_牛客网 一个数如果恰好等于它的各因子(该数本身除外)之和&#xff0c;如&#xff1a;6321。则称其为“完数”&#xff1b;若因子之和大于该数&#xff0c;则称其为“盈数”。 求出2到60之间所有“完数”和“盈数”。 输入描述&#xff…...

001-码云操作

码云操作 一、配置公钥1.官网地址1.进入 git bash2.查看生成的公钥3.设置到 Gitee4.测试 二、初始化一个项目1.新建仓库 一、配置公钥 方便后续提交代码不用填写密码 1.官网地址 官网地址&#xff1a;https://gitee.com/Git码云教程&#xff1a;https://gitee.com/help/arti…...

数据结构:二叉搜索树(排序树)

1.二叉搜索树的定义 二叉搜索树要么是空树&#xff0c;要么是满足以下特性的树 &#xff08;1&#xff09;左子树不为空&#xff0c;那么左子树左右节点的值都小于根节点的值 &#xff08;2&#xff09;右子树不为空&#xff0c;那么右子树左右节点的值都大于根节点的值 &#…...

【愚公系列】《Python网络爬虫从入门到精通》036-DataFrame日期数据处理

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

C++(蓝桥杯常考点)

前言&#xff1a;这个是针对于蓝桥杯竞赛常考的C内容&#xff0c;容器这些等下棋期再讲 C 在DEVC中注释和取消注释的方法&#xff1a;ctrl/ ASCII值&#xff08;常用的&#xff09;&#xff1a; A-Z:65-90 a-z:97-122 0-9:48-57 换行/n:10科学计数法&#xff1a;eg&#xff1a…...

支付宝 IoT 设备入门宝典(下)设备经营篇

上篇介绍了支付宝 IoT 设备管理&#xff0c;但除了这些基础功能外&#xff0c;商户还可以利用设备进行一些运营动作&#xff0c;让设备更好的帮助自己&#xff0c;本篇就会以设备经营为中心&#xff0c;介绍常见的设备相关能力和问题解决方案。如果对上篇感兴趣&#xff0c;可以…...

蓝桥杯 之 填空题-位运算与循环

文章目录 循环握手问题门牌制作-循环小球反弹幸运数艺术与篮球跑步卡片 位运算3个1美丽的2024 位运算 可以关注这个Lowbit(x) 如何判断最低位是否是1&#xff1f; num&1 1就说明num最低位是1 循环 循环 握手问题 握手问题 思路分析&#xff1a; 可以直接计算出来&…...

iOS逆向工程概述与学习路线图

iOS逆向工程概述与学习路线图 欢迎各位加入我的iOS逆向工程专栏&#xff01;在这个系列的第一篇文章中&#xff0c;我将为大家介绍iOS逆向工程的基本概念、应用场景以及完整的学习路线图&#xff0c;帮助大家建立清晰的学习框架。 什么是iOS逆向工程&#xff1f; 逆向工程&a…...

DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)📚前言📚页面效果📚指令输入…...

基于 Ingress-Nginx 实现 mTLS 双向认证

目录 背景描述&#xff1a; TLS 和 MTLS 之间的差异 通过自签名证书启用双向 TLS 1. 生成证书 (1) 生成 CA&#xff08;根证书颁发机构&#xff09; (2) 生成 CA&#xff08;根证书颁发机构&#xff09; (3) 生成客户端证书 2. 在 Kubernetes 中配置 mTLS &#x…...

学到什么记什么(25.3.3)

Upload-labs 今日重新做了一下文件上传漏洞&#xff0c;这里第一题之前采用直接抓包改后缀名.jpg为.php&#xff0c;再写入一句话<?php phpinfo();?>然后放行&#xff0c;得到图片地址&#xff08;可复制&#xff09;&#xff0c;本来直接访问图片地址即可得到敏感信息…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...