news 2026/6/9 19:39:07

华华给月月准备礼物【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华华给月月准备礼物【牛客tracker 每日一题】

华华给月月准备礼物

时间限制:1秒 空间限制:32M

知识点:思维题

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

二月中旬虐狗节前夕,华华决定给月月准备一份礼物。为了搭建礼物的底座,华华需要若干根同样长的木棍。华华手头上有一些长度参差不齐的木棍,他想将每根都裁剪成若干段自己想要的长度,并丢掉多余的部分。因为华华的手很巧,所以他的裁剪过程不会有任何的失误。也就是说,对于一根长度为N的木棍,华华可以精准的将它们裁剪为若干段木棍,使它们的长度之和为N。
华华不知道裁剪成多长比较好,所以干脆越长越好。不过由于华华有点强迫症,所以他希望长度为非负整数。保证所有木棍的原长也是非负整数。那么请问华华最终得到的每根木棍多长呢?

输入描述:

第一行两个正整数N 、 K N、KNK,表示木棍原本的根数和华华希望得到的木棍根数。
第二行N NN个正整数L i L_iLi表示每根木棍的初始长度。

输出描述:

输出一行一个非负整数,表示华华最终得到的n nn根木棍的每根最大长度。

示例1

输入:

5 10 4 4 4 5 3

输出:

1

说明:

如果长度为2 22,只能得到2 + 2 + 2 + 2 + 1 = 9 2+2+2+2+1=92+2+2+2+1=9根,不够;长度为1 11可以得到4 + 4 + 4 + 5 + 3 = 20 4+4+4+5+3=204+4+4+5+3=20根,足够。所以答案最大是1 11

示例2

输入:

5 3 1 2 3 4 5

输出:

3

备注:

1 ≤ N ≤ 2 × 10 5 , 1 ≤ L i ≤ 10 9 , 1 ≤ K ≤ 10 9 1≤N≤2×10^5,1≤L_i≤10^9,1≤K≤10^91N2×1051Li1091K109

解题思路

首先计算所有木棍的总长度,若总长度小于K KK则直接输出0 00(无法剪出K KK根木棍,最长长度为0 00);否则采用二分查找确定最大可行长度,左边界l = 1 l=1l=1、右边界r rr为单根木棍的最大长度,每次取m i d = ( l + r + 1 ) / 2 mid=(l+r+1)/2mid=(l+r+1)/2(向上取中避免死循环),通过c h e c k checkcheck函数统计所有木棍按m i d midmid长度裁剪能得到的总根数(每根木棍可裁剪数为l e n [ i ] / m i d len[i]/midlen[i]/mid),若总数≥ K ≥KK说明m i d midmid可行,将左边界更新为m i d midmid,否则更新右边界为m i d − 1 mid-1mid1;最终左边界l即为能剪出K KK根木棍的最大整数长度。该方法通过二分将时间复杂度降至O ( N l o g ( m a x L ) ) O(N log(maxL))O(Nlog(maxL)),适配N NN2 e 5 2e52e5L i L_iLiK KK1 e 9 1e91e9的规模,高效且精准找到符合要求的最长长度。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=2e5+10;ll len[N];ll n,k;boolcheck(ll x){ll cnt=0;for(ll i=0;i<n;i++){cnt+=len[i]/x;if(cnt>=k)return1;}return0;}intmain(){cin>>n>>k;ll sum=0,mx=0;for(ll i=0;i<n;i++){cin>>len[i];sum+=len[i];mx=max(mx,len[i]);}if(sum<k){cout<<0;return0;}ll l=1,r=mx;while(l<r){ll mid=(l+r+1)/2;// 向上取中if(check(mid))l=mid;elser=mid-1;}cout<<l<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:19:38

儿童早教创新:家长定制VoxCPM-1.5-TTS-WEB-UI讲故事声音模板

儿童早教创新&#xff1a;家长定制VoxCPM-1.5-TTS-WEB-UI讲故事声音模板在智能音箱和有声读物早已进入千家万户的今天&#xff0c;一个看似简单却常被忽视的问题浮出水面&#xff1a;为什么孩子总是听不进去“机器讲的故事”&#xff1f;许多家长发现&#xff0c;哪怕是最生动的…

作者头像 李华
网站建设 2026/6/10 3:10:30

如何让Quarkus 2.0原生应用秒级启动?揭秘JVM与native配置的最优解

第一章&#xff1a;Quarkus 2.0 原生编译概述Quarkus 2.0 引入了对原生编译的全面优化&#xff0c;显著提升了基于 GraalVM 的构建效率与运行时性能。通过将 Java 应用提前编译为本地可执行文件&#xff0c;Quarkus 实现了极短的启动时间和更低的内存占用&#xff0c;特别适用于…

作者头像 李华
网站建设 2026/6/10 9:31:10

JDK 23重磅更新:instanceof int支持背后的5个关键设计考量

第一章&#xff1a;JDK 23中instanceof int支持的背景与意义Java 语言在持续演进中不断优化语法特性&#xff0c;提升开发者的编码效率与代码可读性。JDK 23 引入了一项备受关注的语言改进——对 instanceof 操作符支持基本类型&#xff08;如 int&#xff09;的直接判断。尽管…

作者头像 李华
网站建设 2026/6/10 10:28:14

PyCharm激活码永久免费?不如先看看这款免费TTS模型VoxCPM-1.5-TTS-WEB-UI

PyCharm激活码永久免费&#xff1f;不如先看看这款免费TTS模型VoxCPM-1.5-TTS-WEB-UI 在AI工具日益普及的今天&#xff0c;不少开发者仍在为“PyCharm激活码永久免费”这类话题辗转反侧。但与其把时间花在寻找灰色捷径上&#xff0c;不如关注真正能提升生产力的技术突破——比如…

作者头像 李华
网站建设 2026/6/10 11:16:40

【限时推荐】Python缓存自动清理设计模式:让应用内存长期稳定运行

第一章&#xff1a;Python缓存过期清理的核心价值在构建高性能的Python应用时&#xff0c;缓存机制是提升响应速度和降低系统负载的关键手段。然而&#xff0c;若缺乏有效的过期清理策略&#xff0c;缓存数据可能变得陈旧或占用过多内存资源&#xff0c;反而导致性能下降甚至服…

作者头像 李华