洛谷题解 - P1873 [COCI 2011/2012 #5] EKO / 砍树

《二分答案》—— P1873 [COCI 2011/2012 #5] EKO / 砍树 [COCI 2011/2012 #5] EKO / 砍树伐木工人 Mirko 需要砍 MMM 米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko 只被允许砍伐一排树。Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数 HHH(米),伐木机升起一个巨大的锯片到高度 HHH,并锯掉所有树比 HHH 高的部分(当然,树木不高于 HHH 米的部分保持不变)。Mirko 就得到树木被锯下的部分。例如,如果一排树的高度分别为 20,15,1 阅读详情

题目描述

伐木工人 Mirko 需要砍 M M M 米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko 只被允许砍伐一排树。

Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数 H H H(米),伐木机升起一个巨大的锯片到高度 H H H,并锯掉所有树比 H H H 高的部分(当然,树木不高于 H H H 米的部分保持不变)。Mirko 就得到树木被锯下的部分。例如,如果一排树的高度分别为 20 , 15 , 10 20,15,10 20,15,10 和 17 17 17,Mirko 把锯片升到 15 15 15 米的高度,切割后树木剩下的高度将是 15 , 15 , 10 15,15,10 15,15,10 和 15 15 15,而 Mirko 将从第 1 1 1 棵树得到 5 5 5 米,从第 4 4 4 棵树得到 2 2 2 米,共得到 7 7 7 米木材。

Mirko 非常关注生态保护,所以他不会砍掉过多的木材。这也是他尽可能高地设定伐木机锯片的原因。请帮助 Mirko 找到伐木机锯片的最大的整数高度 H H H,使得他能得到的木材至少为 M M M 米。换句话说,如果再升高 1 1 1 米,他将得不到 M M M 米木材。

输入格式

第 1 1 1 行 2 2 2 个整数 N N N 和 M M M, N N N 表示树木的数量, M M M 表示需要的木材总长度。

第 2 2 2 行 N N N 个整数表示每棵树的高度。

输出格式

1 1 1 个整数,表示锯片的最高高度。

样例 #1

样例输入 #1

4 7
20 15 10 17

样例输出 #1

15

样例 #2

样例输入 #2

5 20
4 42 40 26 46

样例输出 #2

36

提示

对于 100 % 100\% 100% 的测试数据, 1 ≤ N ≤ 1 0 6 1\le N\le10^6 1≤N≤106, 1 ≤ M ≤ 2 × 1 0 9 1\le M\le2\times10^9 1≤M≤2×109,树的高度 ≤ 4 × 1 0 5 \le 4\times 10^5 ≤4×105,所有树的高度总和 > M >M >M。

代码

#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
ull a[1000006];
int main()
{
	ull n,m;
	cin>>n>>m;
	for(ull i=1; i<=n; i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	ull sum=0;
	ull cur=n;
	while(sum<m)
	{
		sum+=(a[cur]-a[cur-1])*(n-cur+1);
		cur--;
	}
	cur++;
	cout<<a[cur-1]+(sum-m)/(n-cur+1);
	return 0;
}
【题解-洛谷】P1873 [COCI 2011/2012 #5] EKO / 砍树 Mirko 非常关注生态保护,所以他不会砍掉过多的木材。这也是他尽可能高地设定伐木机锯片的原因。请帮助 Mirko 找到伐木机锯片的最大的整数高度。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。Mirko 就得到树木被锯下的部分。例如,如果一排树的高度分别为。Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数。(米),伐木机升起一个巨大的锯片到高度。米的高度,切割后树木剩下的高度将是。个整数,表示锯片的最高高度。,使得他能得到的木材至少为。 阅读详情

相关推荐

题解:洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树

题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。Mirko 非常关注生态保护,所以他不会砍掉过多的木材。请帮助 Mirko 找到伐木机锯片的最大的整数高度。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。例如,如果一排树的高度分别为。Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数。(米),伐木机升起一个巨大的锯片到高度。米的高度,切割后树木剩下的高度将是。个整数,表示锯片的最高高度。

团爸讲算法 840

【洛谷 P1873】[COCI 2011/2012 #5] EKO / 砍树 题解(向量+二分查找)

伐木工人 Mirko 需要砍M米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko 只被允许砍伐一排树。Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有树比H高的部分(当然,树木不高于H米的部分保持不变)。Mirko 就得到树木被锯下的部分。例如,如果一排树的高度分别为201510和17,Mirko 把锯片升到15米的高度,切割后树木剩下的高度将是15。

HEX9CF的技术博客 802

Brainstorm简单分析近红外数据(fNIRS)(一)

Brainstorm分析fNIRS数据

weixin_43604817的博客 1352

【洛谷】P1873 [COCI 2011/2012 #5] EKO / 砍树

根据题目中的“帮助 Mirko 找到伐木机锯片的最大的整数高度 H,使得他能得到的木材至少为 M 米。换句话说,如果再升高 1 米,他将得不到 M 米木材。” 我们可以判断出是用二分的第二个板子。check() 函数中,我们设置一个变量sum,并初始化为0。2. 否则说明当前高度下,锯下来的木材长度不够m,那么我们为了得到总长度为m的木材,就得放低锯木片的高度,因此让r=mid-1。1. 如果sum>=m,也就说明当前枚举的答案可以更大,我们就让l=mid(也就是往数轴右边找)。

m0_62531913的博客 897

Cadence HDL原理图库避坑指南:从Excel导入引脚到解决‘V- V+’报错(附FPGA实例)

本文详细介绍了Cadence HDL原理图库的高效构建与排错方法,重点讲解如何从Excel智能导入引脚数据并优化FPGA封装设计。通过数据预处理、智能导入和深度排错三个关键阶段,帮助工程师避免常见错误如‘V- V+’报错,提升设计效率和准确性。

weixin_28739079的博客 236

开源DIY | 打造会“听”会“走”的智能移动垃圾桶

本文详细介绍了如何利用Arduino和超声波传感器打造一款会“听”会“走”的智能移动垃圾桶。通过开源硬件和简单编程,实现声控移动和自动避障功能,适合创客爱好者和家庭DIY。项目成本控制在200元内,涵盖硬件搭建、电路连接和核心功能实现,是入门级机器人制作的理想选择。

weixin_33670713的博客 232

砍树(二分答案)

二分答案

m0_72542983的博客 495

新手避坑指南:HT7036计量芯片SPI读取电压的完整流程(从复位到校准)

本文详细介绍了HT7036计量芯片的SPI读取电压完整流程,从硬件准备到校准设置,重点解析了复位引脚处理、SPI通信配置、芯片初始化及数据处理等关键步骤。针对常见问题如晶振焊接、SPI时序错误等提供实用解决方案,帮助开发者高效完成电压测量与校准。

weixin_30070339的博客 327

P1873 [COCI 2011/2012 #5] EKO / 砍树

嗨嗨嗨,大家好,我小菜又回来了。话不多说,上正题。

2301_81784259的博客 2043

【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能

在探讨计算机性能优化的旅程中,我们常常被引导去关注算法的复杂度、代码的优化,或是更高效的数据结构。然而,有一个经常被忽视的角色在幕后默默地影响着程序的运行效率——那就是缓存(Cache)。正如哲学家亨利·戴维·梭罗在《瓦尔登湖》中所说:“细节是造成美丽的源泉”,在软件开发的世界里,对缓存的理解和优化,就是那些决定程序性能优雅与否的细节。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 3736

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

m0_51339444的博客 1808

【洛谷题解/COCI 2011/2012 #5】P1873 EKO / 砍树

题目概况 题目链接: https://www.luogu.com.cn/problem/P1873 难度: 普及/提高-,高了(确信 题目分析 简化题目: 简洁至极 涉及知识点: 二分答案 解题思路: 一个裸的二分答案板子题 代码拆解及要点分析 有一点需要提醒: 我们在统计当前高度可以得到多长的木材时,需要判断当前这棵树的高度是否大于mid,要不然会有负数。 完整代码 #include <iostream> #include <cstdio> #define ll long long

lovely_cyqの小窝 686

本地快速部署谷歌开放模型Gemma教程(基于Ollama)

谷歌最近发布了新一代开源AI模型Gemma,此次发布的 Gemma 相比自家的 Gemini 更加轻量级,模型权重也一并开源。不仅可以在笔记本电脑上运行,而且还免费可商用,支持中文。运行速度飞快。

特立独行的博客 6718

洛谷\P1873 [COCI 2011/2012 #5] EKO / 砍树\二分\Python题解

【代码】洛谷\P1873 [COCI 2011/2012 #5] EKO / 砍树\二分\Python题解。

luluxiake_的博客 728

【HALCON工业视觉应用探索】08. C#+Halcon视觉引导机器人抓取:从入门到工业级实战(附完整代码+部署指南)

摘要:本文聚焦C#+Halcon在视觉引导机器人抓取领域的落地应用,从新手友好的“二十分钟基础引导系统”切入,逐步深入工业级场景(汽车变速箱壳体抓取)。内容涵盖核心概念(手眼标定原理、坐标转换、机器人通信协议)、完整技术流程(图像采集→目标定位→标定转换→机器人执行→结果反馈)、工业级代码实现(多目标识别、智能抓取策略、实时状态监控),以及现场部署关键技巧(硬件选型、通信配置、精度优化)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1265

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【题解】【二分】——[COCI 2011/2012 #5] EKO / 砍树

Mirko 非常关注生态保护,所以他不会砍掉过多的木材。请帮助 Mirko 找到伐木机锯片的最大的整数高度。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。例如,如果一排树的高度分别为。Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数。”,再结合题目要求“高度尽量要高”,可以考虑二分答案,尽量让。(米),伐木机升起一个巨大的锯片到高度。米的高度,切割后树木剩下的高度将是。个整数,表示锯片的最高高度。,使得他能得到的木材至少为。的升高,得到的木材也会“

Pantheraonca的博客 207

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

洛谷 P1873

针对练习的算法整数二分加上昨天学习题解的方法对这个题进行思考,因为题中说每个位置都算不同的结果,所以可以使用for循环将每个位置b加上c找到对应的A,并在数列中找到A的左右端的编号ll和rr。这里思考的是使用求右端点的二分模板,并在if判断语句里再使用check函数。这是我们可以确定二分的左右边界是所给出树高度的最大值和最小值。在这个题中数据量很大,是10的9次方,要考虑开longlong。单纯用暴力使用for循环的话肯定是要暴空间和时间的,所以要考虑优化使用二分。因为每个位置都算不同的结果。

2401_82736456的博客 1305

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

洛谷:P1873 [COCI 2011/2012 #5] EKO / 砍树

Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数 H(米),伐木机升起一个巨大的锯片到高度 H,并锯掉所有树比 H 高的部分(当然,树木不高于 H 米的部分保持不变)。例如,如果一排树的高度分别为 20,15,10 和 17,Mirko 把锯片升到 15 米的高度,切割后树木剩下的高度将是 15,15,10 和 15,而 Mirko 将从第 1 棵树得到 5 米,从第 4 棵树得到 2 米,共得到 7 米木材。第 1 行 2 个整数 N 和 M,N 表示树木的数量,M 表示需要的木材总长度。

2503_94758394的博客 254

题解 洛谷 Luogu P1873 [COCI 2011/2012 #5] EKO / 砍树 二分答案 C/C++

很简单的二分答案 每次找区间中点 m,判断以 m 为高度砍下的木头是否够 h 即可

qwq_ovo_pwp的博客 373

P1873 [COCI2011-2012#5] EKO / 砍树

这道题在洛谷已经有很多人使用了二分法,我根据洛谷第一篇题解(我觉得他的代码有一点点问题)写出了我自己的理解。我们从最大的开始砍,从i到i-1,我们可以让比a[i]这棵树大的数全部再次砍去a[i+1]-a[i]的高度。如果sum>m我们就要考虑是不是砍多了,所以我们就退回到a[i+1]去遍历输出,直到符合条件。也就是sum+=(n-i)*(a[i+1]-a[i]);这样可以有效节约运算时间。

Nike_name的博客 333

Luogu 洛谷 P1873 [COCI2011-2012#5] EKO / 砍树 题解

题目说明了要找一个能获得足够多木材的最高的高度,再看数据,数据也是非常的大,所以暴力的做法肯定是行不通的,所以我就使用了二分法里面的二分答案进行这个题的解答。

迪幻的博客 501

NO.63十六届蓝桥杯备战|基础算法-⼆分答案|木材加工|砍树|跳石头(C++)

⼆分答案可以处理⼤部分「最⼤值最⼩」以及「最⼩值最⼤」的问题。如果「解空间」在从⼩到⼤的「变化」过程中,「判断」答案的结果出现「⼆段性」,此时我们就可以「⼆分」这个「解空间」,通过「判断」,找出最优解。设每次跳的最短距离是x ,移⾛的⽯头块数为c。设要切成的⻓度为x ,能切成的段数为c。设伐⽊机的⾼度为H ,能得到的⽊材为C。这个「⼆分答案」的原理其实很容易理解,重点是如何去「判断」答案的可⾏性。c表示在h的基础下,所能获得的木材。c表示在x的基础下,移走岩石的数目。x表示切割出来的小段的长度。

ChoSeitaku的博客 1468

二分答案算法

如果「解空间」在从大到小的变化过程中,「判断」答案的结果出现「二段性」,此时我们就可以「二分」这个「解空间」,通过「判断」,找出最优解。因此,在解空间中,根据 ret 的位置,可以将解集分成两部分,具有「二段性」。在解空间中,根据 ret 的位置,可以将解集分成两部分,具有「二段性」,那么我们就可以「二分答案」。在解空间中,根据 ret 的位置,可以将解集分成两部分,具有「二段性」,那么我们就可以「二分答案」。的位置,可以将解集分成两部分,具有「二段性」,那么我们就可以「二分答案」。

2301_80224556的博客 988

二分答案:砍树

有些二分需要进行排序,有些二分不需要进行排序。但无论如何,二分时,总要判断一下:是否排序。

2403_86817821的博客 211

二分查找专题

因为马上要比赛了,但是自己的二分有时候还是会出问题,所以打算整理一个二分专题。

2201_76011469的博客 317
上一篇: 洛谷题解 - B2015 计算并联电阻的阻值
下一篇: 洛谷题解 - B3850 [GESP202306 四级] 幸运数
Python_enjoy
博客等级 码龄4年 1201粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值