题解:洛谷 B4359 [GESP202506 三级] 分糖果
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷B4359 [GESP202506 三级] 分糖果 - 洛谷【题目描述】有n nn位小朋友排成一队等待老师分糖果。第i ii位小朋友想要至少a i a_iai​颗糖果并且分给他的糖果数量必须比分给前一位小朋友的糖果数量更多不然他就会不开心。老师想知道至少需要准备多少颗糖果才能让所有小朋友都开心。你能帮帮老师吗【输入】第一行一个正整数n nn表示小朋友的人数。第二行n nn个正整数a 1 , a 2 , … , a n a_1,a_2,…,a_na1​,a2​,…,an​依次表示每位小朋友至少需要的糖果数量。【输出】输出一行一个整数表示最少需要准备的糖果数量。【输入样例】4 1 4 3 3【输出样例】16【核心思想】问题分析给定n nn位小朋友第i ii位至少需要a i a_iai​颗糖果且每位小朋友分得的糖果必须严格多于前一位。求最少需要准备的总糖果数。这是一个贪心策略问题核心在于在满足单调递增约束的前提下让每个小朋友分得尽可能少的糖果。算法选择贪心构造从左到右遍历每位小朋友的糖果数取a i a_iai​和s i − 1 1 s_{i-1} 1si−1​1的最大值确保既满足最低需求又满足严格递增关键步骤读入数据读取n nn和数组a [ 1.. n ] a[1..n]a[1..n]贪心构造i ii从1 11到n nns i ← max ⁡ ( a i , s i − 1 1 ) s_i \leftarrow \max(a_i, s_{i-1} 1)si​←max(ai​,si−1​1)解释s i s_isi​至少为a i a_iai​满足最低需求且至少为s i − 1 1 s_{i-1} 1si−1​1满足严格多于前一位累加求和a n s ← ∑ i 1 n s i ans \leftarrow \sum_{i1}^{n} s_ians←∑i1n​si​输出结果a n s ansans时间/空间复杂度时间复杂度O ( n ) O(n)O(n)单次线性遍历空间复杂度O ( n ) O(n)O(n)存储s ss数组可优化为O ( 1 ) O(1)O(1)滚动变量贪心策略的核心思想局部最优保证全局最优对于第i ii位小朋友在满足所有约束条件下取最小值即max ⁡ ( a i , s i − 1 1 ) \max(a_i, s_{i-1} 1)max(ai​,si−1​1)。这个局部最优选择不会影响后续的选择因为后续只需满足 s i s_isi​因此贪心策略正确单调递增的最低成本严格递增序列的最低成本构造方式是每次只比前一位多1 11即s i s i − 1 1 s_i s_{i-1} 1si​si−1​1。但当a i a_iai​更大时必须以a i a_iai​为下限前缀依赖第i ii位的最优解只依赖于前一位的值具有无后效性适合从左到右的贪心处理空间优化实际上只需维护前一个s i − 1 s_{i-1}si−1​的值无需完整数组可优化为O ( 1 ) O(1)O(1)空间适用于带约束的单调序列构造、最小成本满足条件类贪心问题【算法标签】#普及- #贪心【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglong// 定义int为long long类型constintN1005;// 定义数组最大长度intn;// 输入的数字个数inta[N];// 存储原始数字数组ints[N];// 存储处理后的数字数组intans0;// 存储最终结果signedmain(){// 输入数字个数cinn;// 输入n个数字for(inti1;in;i)cina[i];// 处理数组确保s[i]至少比前一个大1for(inti1;in;i)s[i]max(a[i],s[i-1]1);// 计算处理后数组的总和for(inti1;in;i){anss[i];}// 输出最终结果coutansendl;return0;}【运行结果】4 1 4 3 3 16

相关新闻

Solidity 闪电贷攻击防御模式:重入锁、价格预言机与单交易原子性的三层防线

Solidity 闪电贷攻击防御模式:重入锁、价格预言机与单交易原子性的三层防线

Solidity 闪电贷攻击防御模式:重入锁、价格预言机与单交易原子性的三层防线 一、闪电贷攻击不是"借贷问题"而是"原子性问题" 闪电贷(Flash Loan)是DeFi领域最具争议的创新之一。它允许用户在单笔交易内借入任意数量的资产…

2026/7/18 22:34:56阅读更多 →
AI 驱动智能合约安全评分:多维度风险因子加权与自动化安全评级仪表盘

AI 驱动智能合约安全评分:多维度风险因子加权与自动化安全评级仪表盘

AI 驱动智能合约安全评分:多维度风险因子加权与自动化安全评级仪表盘 一、安全评分为什么不是"打分游戏" 智能合约审计行业长期存在一个结构性矛盾:人工审计报告依赖专家经验,结论主观且难以横向对比;静态分析工具输出…

2026/7/18 22:34:56阅读更多 →
2026网盘直链下载助手与不限速解析网站分享:亲测好用!

2026网盘直链下载助手与不限速解析网站分享:亲测好用!

在团队协作或日常资源分发中,我们经常遇到这样一个痛点:需要分享一个几百兆的设计素材包或高清演示视频给多位同事,但公司内网传输慢,邮件附件又有限制。这时候,一些提供临时文件托管服务的站点似乎成了“救命稻草”。…

2026/7/18 22:34:56阅读更多 →
TI AWR雷达CBUFF与LVDS接口配置详解:从原理到实战

TI AWR雷达CBUFF与LVDS接口配置详解:从原理到实战

1. 项目概述:从雷达数据流到高速传输的桥梁在毫米波雷达系统的开发中,最核心也最让人头疼的环节之一,就是如何把ADC采集到的海量原始数据,稳定、高效、无误地“搬”到处理器或者外部FPGA里。这可不是简单的内存拷贝,雷…

2026/7/19 9:08:05阅读更多 →
Java实现Actor模型:并发编程的核心机制与实践

Java实现Actor模型:并发编程的核心机制与实践

1. Actor模型基础概念解析Actor模型作为一种并发编程范式,最早由Carl Hewitt在1973年提出。与传统的共享内存并发模型不同,Actor模型通过消息传递来实现并发,每个Actor都是独立的计算单元,具有以下核心特性:封装性&…

2026/7/19 9:08:05阅读更多 →
Python模块详解:从基础使用到高级技巧

Python模块详解:从基础使用到高级技巧

1. Python模块基础概念解析 模块是Python组织代码的基本单元,它允许我们将相关功能的代码组织到一个文件中。当你在Python解释器或脚本中导入模块时,该文件中的所有定义(函数、类、变量等)都会变得可用。 模块的主要优势包括&…

2026/7/19 9:08:05阅读更多 →
Python量化交易实战:10天构建完整金融数据分析与策略回测体系

Python量化交易实战:10天构建完整金融数据分析与策略回测体系

为什么很多Python学习者看了无数教程,却依然无法真正上手金融分析与量化交易?问题往往不在于代码本身,而在于缺少一套从数据获取到策略回测的完整实战路径。市面上大多数教程要么停留在基础语法,要么直接跳入复杂的数学模型&#…

2026/7/19 9:08:05阅读更多 →
Unity分屏插件Split_Screen_Pro:动态多人游戏布局与性能优化实战

Unity分屏插件Split_Screen_Pro:动态多人游戏布局与性能优化实战

1. 项目概述:为什么我们需要一个专业的分屏插件?在Unity里做本地多人游戏,尤其是那种需要分屏的,比如赛车、格斗或者合作闯关,听起来是个挺酷的点子。很多独立开发者或者小团队一开始都想着自己手搓一个分屏系统&#…

2026/7/19 9:08:05阅读更多 →
青岛拉伸膜的储存条件是怎样的?

青岛拉伸膜的储存条件是怎样的?

青岛拉伸膜的储存条件是怎样的?在工业领域,拉伸膜的应用十分广泛,尤其在青岛地区,拉伸膜在货物包装、运输等环节发挥着重要作用,而青岛昌瑞工业品有限公司是该地区知名的拉伸膜供应企业。合适的储存条件对于保证拉伸膜…

2026/7/19 9:06:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →