news 2026/9/4 3:24:36

洛谷 P2985 Chocolate Eating S 题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷 P2985 Chocolate Eating S 题解

题意梳理

  1. 有 N 块巧克力,必须按顺序吃,一共 D 天。
  2. 幸福值初始cur=0;每晚睡觉后,幸福值向下取整减半。
  3. 某天吃若干巧克力:吃完巧克力后的幸福值,就是当天的幸福值。
  4. 目标:最大化D 天中每天睡前幸福值的最小值(最大化最小值,经典二分答案模型)。
  5. 输出:最大的最低幸福值;输出每一块巧克力在哪一天吃掉。
    注意:数据范围很大,所以总和可以很大,要用long long防止溢出。

核心思想:二分答案

“最大化最小值” 标准套路:二分判定答案 mid:
check(x)函数:判断是否存在吃巧克力方案,保证每一天结束时幸福值都≥x,并且全部巧克力在 D 天内按顺序吃完。

如果check(x)=true:说明可以做到每天最低至少 x,尝试找更大,记录方案,二分右边界:l=mid+1。
如果check(x)=false:做不到,只能往小找:r=mid‑1。
二分范围:l=0,r=text所有巧克力幸福总和。

check函数完整解析
boolcheck(longlongx){longlongcur=0,s=0;//cur:当前幸福;s:已经吃掉的巧克力块数for(inti=1;i<=d;i++)//枚举第i天{cur/=2;//睡一觉,前一天晚上幸福减半,来到新一天起床//只要今天结束幸福还达不到x,就继续吃巧克力(按顺序)while(cur<x&&s<n){s++;cur+=a[s];b[s]=i;//记录第s块巧克力是第i天吃}if(cur<x)//今天吃完所有剩下巧克力依旧达不到x → x不可行{returnfalse;}}//循环走完D天,剩下没吃完的巧克力,全部丢在最后一天d吃for(inti=s+1;i<=n;i++){b[i]=d;}returntrue;}

完整AC代码

#include<bits/stdc++.h>usingnamespacestd;intn,d;inta[50010],b[50010],c[50010];// check(x): 是否可以保证D天,每天结束幸福>=xboolcheck(longlongx){longlongcur=0;ints=0;//s:已经吃掉的巧克力数目for(inti=1;i<=d;i++){cur/=2;//睡一晚,幸福减半,新一天开始//当前幸福不足x,继续吃巧克力while(cur<x&&s<n){s++;cur+=a[s];b[s]=i;}if(cur<x)returnfalse;//今天无论如何达不到x}//D天走完,剩下全部放最后一天for(inti=s+1;i<=n;i++){b[i]=d;}returntrue;}intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n>>d;longlongsum=0;for(inti=1;i<=n;i++){cin>>a[i];sum+=a[i];}longlongl=0,r=sum,ans=0;while(l<=r){longlongmid=(l+r)/2;if(check(mid)){ans=mid;copy(begin(b),end(b),begin(c));l=mid+1;}else{r=mid-1;}}cout<<ans<<'\n';for(inti=1;i<=n;i++){cout<<c[i]<<'\n';}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 9:15:11

RabbitMQ 自学指南:核心模型、代码示例与高频面试题

自学八股这个词&#xff0c;在程序员圈子里真不是贬义。八股文讲的是固定格式、反复背诵&#xff0c;而面试准备这件事&#xff0c;本质就是把基础知识反复咀嚼&#xff0c;嚼到能脱口而出、能应对追问的程度。RabbitMQ 作为消息队列里最常被问到的组件之一&#xff0c;它的基础…

作者头像 李华
网站建设 2026/9/1 12:32:40

聚类分析入门:从核心思想到实战流程的完整指南

1. 项目概述&#xff1a;从“分类”到“聚类”的认知跃迁刚入行做数据分析那会儿&#xff0c;我经常被“分类”和“聚类”这两个词绕晕。客户说“帮我分个类”&#xff0c;我兴冲冲地跑去做有监督的分类模型&#xff0c;结果发现数据压根没标签&#xff0c;白忙活一场。后来才明…

作者头像 李华
网站建设 2026/9/2 11:05:18

OpenStack原理

1、云计算和虚拟化的区别虚拟化是一种具体的技术&#xff0c;而云计算是一种通过技术组合实现的服务模式&#xff0c;可以这样比喻&#xff1a;虚拟化 是制造砖块、钢筋、水泥的技术。它把一堆原始的物理材料&#xff08;服务器、存储、网络&#xff09;标准化、模块化。 云计算…

作者头像 李华
网站建设 2026/8/31 12:20:28

STM32F103内置DAC实战:从原理到音频输出与波形生成

1. 项目概述&#xff1a;当STM32F103遇上DAC 在嵌入式开发里&#xff0c;数字世界和模拟世界的桥梁&#xff0c;DAC&#xff08;数模转换器&#xff09;绝对算得上是一个关键角色。你可能已经用STM32的PWM配合RC滤波做过简单的模拟输出&#xff0c;或者用外部的DAC芯片实现过更…

作者头像 李华
网站建设 2026/9/2 8:56:05

豆包工作Agent落地飞书:从任务拆解到工作流自动化的实践指南

“豆包工作 Agent”这一波最值得关注的点&#xff0c;不是又多了一个 AI 助手&#xff0c;而是字节跳动把它直接做进了飞书的工作流里。过去你在飞书里点开文档、维护多维表格、发起审批、盯日程提醒&#xff0c;这些重复操作已经够浪费时间&#xff1b;现在“用一句指令让 Age…

作者头像 李华
网站建设 2026/9/2 7:57:51

AI项目风险审计:从评估失真到成本失控的工程防范

AI 盛世还在继续&#xff0c;但已经有不少团队开始意识到&#xff0c;这个行业的风险正在以类似金融系统中“次级债”的方式积累&#xff1a;大量项目建立在不够扎实的数据、被美化过的指标和过高预期之上&#xff0c;当外部条件变化时&#xff0c;风险会集中暴露。站在工程角度…

作者头像 李华