news 2026/7/18 22:36:55

题解:洛谷 B4359 [GESP202506 三级] 分糖果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
题解:洛谷 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

【核心思想】

  1. 问题分析:给定n nn位小朋友,第i ii位至少需要a i a_iai颗糖果,且每位小朋友分得的糖果必须严格多于前一位。求最少需要准备的总糖果数。这是一个贪心策略问题,核心在于在满足单调递增约束的前提下,让每个小朋友分得尽可能少的糖果。

  2. 算法选择

    • 贪心构造:从左到右遍历,每位小朋友的糖果数取a i a_iais i − 1 + 1 s_{i-1} + 1si1+1的最大值,确保既满足最低需求又满足严格递增
  3. 关键步骤

    • 读入数据:读取n nn和数组a [ 1.. n ] a[1..n]a[1..n]
    • 贪心构造i ii1 11n nn):
      • s i ← max ⁡ ( a i , s i − 1 + 1 ) s_i \leftarrow \max(a_i, s_{i-1} + 1)simax(ai,si1+1)
      • 解释:s i s_isi至少为a i a_iai(满足最低需求),且至少为s i − 1 + 1 s_{i-1} + 1si1+1(满足严格多于前一位)
    • 累加求和a n s ← ∑ i = 1 n s i ans \leftarrow \sum_{i=1}^{n} s_iansi=1nsi
    • 输出结果a n s ansans
  4. 时间/空间复杂度

    • 时间复杂度:O ( n ) O(n)O(n),单次线性遍历
    • 空间复杂度:O ( n ) O(n)O(n),存储s ss数组(可优化为O ( 1 ) O(1)O(1)滚动变量)
  5. 贪心策略的核心思想

    • 局部最优保证全局最优:对于第i ii位小朋友,在满足所有约束条件下取最小值,即max ⁡ ( a i , s i − 1 + 1 ) \max(a_i, s_{i-1} + 1)max(ai,si1+1)。这个局部最优选择不会影响后续的选择(因为后续只需满足> s i > s_i>si),因此贪心策略正确
    • 单调递增的最低成本:严格递增序列的最低成本构造方式是每次只比前一位多1 11,即s i = s i − 1 + 1 s_i = s_{i-1} + 1si=si1+1。但当a i a_iai更大时,必须以a i a_iai为下限
    • 前缀依赖:第i ii位的最优解只依赖于前一位的值,具有无后效性,适合从左到右的贪心处理
    • 空间优化:实际上只需维护前一个s i − 1 s_{i-1}si1的值,无需完整数组,可优化为O ( 1 ) O(1)O(1)空间
    • 适用于带约束的单调序列构造、最小成本满足条件类贪心问题

【算法标签】

#普及- #贪心

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 定义int为long long类型constintN=1005;// 定义数组最大长度intn;// 输入的数字个数inta[N];// 存储原始数字数组ints[N];// 存储处理后的数字数组intans=0;// 存储最终结果signedmain(){// 输入数字个数cin>>n;// 输入n个数字for(inti=1;i<=n;i++)cin>>a[i];// 处理数组,确保s[i]至少比前一个大1for(inti=1;i<=n;i++)s[i]=max(a[i],s[i-1]+1);// 计算处理后数组的总和for(inti=1;i<=n;i++){ans+=s[i];}// 输出最终结果cout<<ans<<endl;return0;}

【运行结果】

4 1 4 3 3 16
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 22:35:01

HarmonyOS ArkUI Marquee 跑马灯与 Gauge 仪表盘:公告滚动与数据展示

系列&#xff1a;鸿蒙 HarmonyOS 6.1 新特性实战 第 43 篇 Marquee 实现水平滚动文字效果&#xff0c;常用于新闻公告条、优惠信息滚动展示&#xff1b;Gauge 是半圆或弓形仪表盘组件&#xff0c;适合可视化速度、电量、得分等数值。本篇将两者结合&#xff0c;搭建一个带播控…

作者头像 李华
网站建设 2026/7/18 22:32:09

【计算机毕业设计】本科生学习资源整合功能设计与实现

1.系统介绍随着高等教育数字化进程加快&#xff0c;本科生学习资源分散、师生交互渠道单一等问题日益凸显&#xff0c;传统的资源获取方式已无法满足学生个性化学习、教师高效教学的需求&#xff0c;开发一套整合性的学习资源管理系统成为提升高校教学辅助效率的关键。本系统采…

作者头像 李华
网站建设 2026/7/18 22:28:23

【AI大模型微调】第 3 章 微调整体流程

第 3 章 微调整体流程 微调整体流程可以分为以下多个环节&#xff1a; 模型选择-> 数据准备 -> 微调训练 -> 模型验证 3.1 模型选择 在进行监督微调&#xff08;SFT&#xff09;时&#xff0c;模型选择主要包括两个问题&#xff1a;选择 Base Model 还是 Instruct Mod…

作者头像 李华
网站建设 2026/7/18 22:25:08

基于用户注册信息的关键词检测挑战赛「Datawhale AI 夏令营」

一、赛事背景 在智能科技日新月异的当下&#xff0c;语音关键词检测功能已深度融入大众生活。无论是清晨唤醒智能音箱播放新闻&#xff0c;还是驾车途中唤醒车载语音助手导航&#xff0c;语音关键词检测技术为人们带来极大便利。但现有技术以已知关键词的定制系统为主&#xff…

作者头像 李华
网站建设 2026/7/18 22:24:51

【计算机毕业设计】农产品销售系统设计与实现

1.系统介绍随着乡村振兴战略的推进和农产品电商的快速发展&#xff0c;传统线下农产品销售模式已难以满足消费者便捷购物、商家高效运营的需求&#xff0c;信息不对称、交易流程繁琐、管理效率低等问题凸显&#xff0c;开发一套数字化、一体化的农产品销售系统成为行业发展的迫…

作者头像 李华