首页 > 其他分享 >[COCI2011-2012#5] EKO / 砍树

[COCI2011-2012#5] EKO / 砍树

时间:2023-07-01 14:11:06浏览次数:73  
标签:EKO Mirko 15 锯片 高度 样例 long COCI2011 2012

[COCI2011-2012#5] EKO / 砍树

题目描述

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

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

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

4 7
20 15 10 17

样例输出 #1

15

样例 #2

样例输入 #2

5 20
4 42 40 26 46

样例输出 #2

36

提示

对于 \(100\%\) 的测试数据,\(1\le N\le10^6\),\(1\le M\le2\times10^9\),树的高度 \(<10^9\),所有树的高度总和 \(>M\)。

代码

#include <bits/stdc++.h>
using namespace std;
long long h[1000050];
long long n,m;//n是树木的数量,m是所需木材的总长度
long long f(long long x)
{//传入高度
	long long sum=0;
	for(int i=1;i<=n;i++)
	{
		if(h[i]>x)
		{
			sum+=h[i]-x;
		}
	}
	return sum;
}
int main()
{
	cin >> n >> m;
	for(int i=1;i<=n;i++)
	{
		cin >> h[i];
	}
	long long l=0,r=2000000000;
	while(l<r)
	{
		long long mid=(l+r+1)/2;
		if(f(mid)<m)
		{
			r=mid-1;
		}
		else{
			l=mid;
		}
	}
	cout << l;
	return 0;
}

标签:EKO,Mirko,15,锯片,高度,样例,long,COCI2011,2012
From: https://www.cnblogs.com/momotrace/p/p1873.html

相关文章

  • P1552 [APIO2012] 派遣 题解
    一、题目描述:给你一个$n$个点的有根树,每个点有两个参数$w$和$v$。再给出一个数$m$。对于每一个点$u$,设它的子树内最多可以选择$k_u$个点$a_1,a_2,...,a_{k_u}$,使得$\sum_{i=1}^kw_{a_i}\lem$。那么点$u$的价值为$v_u\timesk_u$,求$max(\su......
  • Oracle 11.2.0.3 ORA-12012ORA-29280 ORA-06512
    Oracle11.2.0.3ORA-12012ORA-29280ORA-06512问题现象:dbalert日志中出现如下告警信息:Errorsinfile/app/oracle/diag/rdbms/cctv/CCTV2/trace/CCTV2_j000_1370.trc:ORA-12012:erroronautoexecuteofjob"ORACLE_OCM"."MGMT_CONFIG_JOB_2_2"ORA......
  • winserver2012 登录秘密找回
      参考:https://wenku.csdn.net/answer/a7ed8fe6403cc45052a9a2f0d88601d6 实践后的方法:①登录界面连续点击多次【shift】点击多次后会弹出任务管理器,如图 ②文件》运行新任务》cmd》确定或者:文件》运行新任务》浏览 C:\Windows\System32\cmd.exe》确定③cmd输......
  • vs2012
    <?xmlversion="1.0"encoding="Windows-1252"?><!--//Stylename:VS2012DarkThemeforNotepad++Author:SeanD.Cline([email protected])Description:AclosereplicaoftheVisualStudio2012"Dark"th......
  • vs2012-dark ls
    <?xmlversion="1.0"encoding="Windows-1252"?><!--//Stylename:VS2012DarkThemeforNotepad++Author:SeanD.Cline([email protected])Description:AclosereplicaoftheVisualStudio2012"Dark"th......
  • P2050 [NOI2012] 美食节
    luoguP2050[NOI2012]美食节题意CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节。作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴。他很快就尝遍了美食节所有的美食。然而,尝鲜的欲望是难以满足的。尽管所有的菜品都很可口,厨师做菜的速度也很快,小M仍然觉得......
  • AX2012 call Webservice directly
    StaticvoidCallWebService(strsURL,RecIdPORecId){   System.Net.HttpWebRequesthttpRequest=null;   System.Net.HttpWebResponsehttpResponse=null;   System.Net.CookieCollectioncookies=null;   CLRObjectclro=null;   System.Text.En......
  • SQL 2012 更换数据库路径
    SQL2012更换数据库路径 SQL2012更换数据库路径Sqlserver数据库存储路径的修改Sqlserver数据库存储路径问题:本系统sqlserver路径默认是存储在C盘目录下的,由于数据会慢慢变大和避免重装系统数据丢失等问题,最好手动将路径设置在D盘。更改路径方法:情况一:更改数据库默认存储路......
  • 洛谷 P6821 [PA2012]Tanie linie
    洛谷传送门考虑恰好选\(k\)个子段怎么做。设恰好选\(i\)个子段的和最大值为\(h_k\)。可以得到\(h_{i+1}-h_i\leh_i-h_{i-1}\),因为\(h_i\toh_{i+1}\)的过程就是多选一个子段,贡献肯定不如上一次选即\(h_{i-1}\toh_i\)大。如果它不成立,那我们可以交换......
  • Sql2012安装
    在MSDN,我告诉你-做一个安静的工具站(itellyou.cn)中选择合适的版本;也可以直接ed2k://|file|cn_sql_server_2012_developer_edition_with_sp1_x64_dvd_1234492.iso|4231520256|C3653494E5E01CA5ADFAF910CBC32D75|/下载这个链接下载好后会进入这个界面我们选择左上角的安装......