【贪心算法】day1

【贪心算法】day1

📝前言说明:

  • 本专栏主要记录本人的贪心算法学习以及LeetCode刷题记录,按专题划分
  • 每题主要记录:(1)本人解法 + 本人屎山代码;(2)优质解法 + 优质代码;(3)精益求精,更好的解法和独特的思想(如果有的话);(4)这个贪心算法正确性的证明
  • 文章中的理解仅为个人理解。如有错误,感谢纠错
🎬个人简介:努力学习ing
📋本专栏:C++刷题专栏
📋其他专栏:C语言入门基础python入门基础C++学习笔记Linux
🎀ZEEKLOG主页 愚润泽

你可以点击下方链接,进行其他贪心算法题目的学习

点击链接开始学习
贪心day1贪心day2
贪心day3贪心day4
贪心day5贪心day6
贪心day7贪心day8
贪心day9贪心day10

也可以点击下面连接,学习其他算法

点击链接开始学习
优选专题动态规划
递归、搜索与回溯贪心算法

题单获取【贪心算法】题单汇总

题目


贪心算法导论

贪心策略的核心思想:局部最优 当做 全局最优

  1. 把解决问题的过程分为若干步
  2. 解决每一步时,都选择当前看起来 “最优的” 解法
  3. “希望” 这个局部最优是全局最优

贪心算法的特点:

  1. 根据 “贪心策略” 得到的结果可能是错误的
  2. 正确的 “贪心策略” 需要证明 “正确性”
  3. 不同题目的贪心策略不同,把我们遇到的贪心策略当 “经验” 来看就好

860. 柠檬水找零

题目链接:https://leetcode.cn/problems/lemonade-change/description/

在这里插入图片描述

优质解

思路:

  • 问题分析(一杯柠檬水5元):找零问题可以分情况讨论
    • 5 元 → 不用找,直接收下
    • 10 元 → 收下,且找 5
    • 20 元 → 收下,找10 + 5 or 5 * 3
  • 前两种情况是固定找法,只有20的时候有选择,此时最优解是:优先找10 + 5(这就是本题的贪心策略)

代码:

classSolution{public:boollemonadeChange(vector<int>& bills){int arr[2];// 用来存放 5, 10 元的数量memset(arr,0,sizeof(arr));for(auto b: bills){if(b ==5) arr[0]++;elseif(b ==10){ arr[1]++; arr[0]--;}else{if(arr[1]>0)// 有 10 块的优先找10块的{ arr[1]--; arr[0]--;}else arr[0]-=3;}if(arr[0]<0)returnfalse;}returntrue;}};

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

证明

利用:交换论证法
原理:在不破坏最优解的 “最优性质” 的前提下,将最优解调整成贪心解,则代表这个贪心解是正确的

在这个问题中:只有遇到 20 元的时候才需要考虑策略:

  • 贪心策略:有 10 就优先 10 + 5
  • 最优策略:每次找20:可能 10 + 55 + 5 + 5(未知的)

最优策略中:当选择 5 + 5 + 5 的时候,如果有多的10块钱,此时可以用10替换一个 5 + 5,(此时,最优解依然是最优解,即:依然可以保证能够找零成功,所以这个最优解可以调整为贪心解)


2208. 将数组和减半的最少操作次数

题目链接:https://leetcode.cn/problems/minimum-operations-to-halve-array-sum/description/

在这里插入图片描述

个人解

思路:

  • 每次选最大的来减小一半
  • 意味着要排序,可以利用大根堆

屎山代码:

classSolution{public:inthalveArray(vector<int>& nums){ priority_queue<double> arr;double sum =0;for(auto x: nums){ sum += x; arr.push(x);}double cur = sum;int count =0;while(cur > sum /2){ count++;double max = arr.top(); arr.pop(); cur -= max /2; arr.push(max /2);}return count;}};

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
空间复杂度: O ( n ) O(n) O(n)

证明

依旧是:交换论证法

  • 某次选择中,若:最优解中选择的数 x < 贪心中的 y
  • 易知,此x可用y替换

🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

Read more

本地离线部署AI大模型:OpenClaw + Ollama + Qwen3.5:cloud/Qwen3:0.6b 超详细教程(无需GPU)

本地离线部署AI大模型:OpenClaw + Ollama + Qwen3.5:cloud/Qwen3:0.6b 超详细教程(无需GPU)

前言 随着开源大模型越来越成熟,我们完全可以在自己电脑上本地运行AI,不联网、不上传数据、免费使用,隐私性极强。 今天这篇文章,我会一步步带你完成:Ollama + Qwen3.5:cloud(主力模型)+ Qwen3:0.6b(轻量备选)+ OpenClaw 的本地部署,实现一个属于自己的本地聊天AI,兼顾效果与低配置适配。 一、项目介绍 本项目实现本地离线运行阿里通义千问系列大模型(Qwen3.5:cloud 主力模型 + Qwen3:0.6b 轻量备选模型),全程不需要云端API,不需要高性能显卡,普通电脑就能跑,可根据自身电脑配置选择对应模型。 用到的工具: * Ollama:最简单的本地大模型管理工具,一键拉取、运行、管理模型 * Qwen3.5:cloud:阿里云开源的轻量高性能大语言模型,对话效果强、适配本地部署,作为主力使用

By Ne0inhk
医疗AI场景下算法编程的深度解析(2026新生培训讲稿)(八)

医疗AI场景下算法编程的深度解析(2026新生培训讲稿)(八)

第15章 模型融合与集成策略 在机器学习竞赛和实际应用中,模型融合(Model Ensemble)是提升预测性能的利器。通过组合多个不同的基模型,集成策略能够综合各个模型的优势,抵消单个模型的偏差和方差,从而获得比任何单一模型更稳定、更准确的预测结果。在医疗AI领域,模型融合同样具有重要价值——面对复杂多模态的医疗数据,单一模型往往难以全面捕捉所有信息,而融合多个异质模型可以提升诊断的鲁棒性和准确性。本章将从集成学习的基本思想出发,系统介绍常见的模型融合方法,包括投票法、平均法、Stacking、Blending等,并通过实战案例展示如何构建融合模型来提升疾病预测性能。 15.1 集成学习的基本思想 集成学习(Ensemble Learning)的核心思想是“三个臭皮匠,顶个诸葛亮”——通过结合多个学习器来完成学习任务,通常可以获得比单一学习器更优越的泛化性能。根据个体学习器的生成方式,集成学习主要分为两大类: * Bagging:并行训练多个独立的基学习器,然后通过平均或投票进行结合。典型代表是随机森林。Bagging主要降低方差。 * Boosting:串行训练基学习

By Ne0inhk
基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(上)

基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(上)

摘要 本研究旨在解决医疗人工智能(AI)在临床落地中面临的核心挑战:如何在严格合规与数据安全的前提下,构建可信赖、可审计、可灵活扩展的智能诊疗辅助系统。传统的单体式AI应用存在“黑盒”风险、难以审计、能力扩展与合规迭代耦合等问题。为此,本文提出并详细论述了一种基于新兴的模型上下文协议的**“可插拔式临床AI工具链”**架构。该架构将复杂的医疗AI系统解构为三个层次:Host(智能体)、MCP Server(能力提供方)和标准协议(JSON-RPC 2.0)。我们设计了三类关键的MCP Server:Clinical Server(临床工具链)、Imaging Server(影像工具链)和Compliance & Audit Server(合规与审计服务器),分别负责临床决策支持、影像智能推理和全流程合规审计。本文重点阐述了一种“两段式多模态”的最稳推理链路,确保影像事实与文本生成解耦,并通过将安全合规策略固化为工具调用契约,实现了“安全左移”。此外,

By Ne0inhk
OpenClaw 刚配好就完了?5 步调教,让你的 AI 助手真正“能干活”

OpenClaw 刚配好就完了?5 步调教,让你的 AI 助手真正“能干活”

很多人装完 OpenClaw,接上 Discord 或 Telegram,发现能聊天了就觉得“搞定了”。 但我自己踩坑一圈后,越来越确定一件事:默认状态的 OpenClaw,可能只发挥了 20% 的能力。剩下的 80%,藏在一些你没太注意的配置文件里——而且改起来并不难。 下面我按“收益从高到低”的顺序,把我自己最有效的 5 步调教方法整理出来。新手照着做,大概率能立刻感受到差别。 默认状态 vs 调教后:差别到底在哪? 先给你一个直观对比,方便建立预期: 项目默认状态调教后回复风格客服味:“我很乐意帮助您!”更像懂你的搭档记忆每次对话都像陌生人记得你们之前聊过什么能力只能聊天能下载视频、查股票、做 PPT、巡检服务器…主动性你不说它不动会定期检查状态,主动提醒成本/效率所有任务都用同一个模型复杂任务用强模型,简单活用便宜模型 如果你只做一件事:先把第 1 步和第 2 步做了,

By Ne0inhk