JZOJ 1724. eko(eko.pas/cpp)

1724. 【10.6NOIP普及模拟】eko(eko.pas/cpp)
(File IO): input:eko.in output:eko.out

时间限制: 1000 ms  空间限制: 256000 KB  具体限制

Goto ProblemSet

题目描述

小x最近终于不用干搬砖的活了,他成为了一名光荣的伐木工人。但伐木工人也不好当,他每天必须至少砍下M米的木材。但小x对此感到毫无压力,因为小y最近给他买了一台崭新的伐木机,可以像野火一样将森林摧毁。但这台伐木机实在太大了,它一次只能将一整排树木一起砍倒。

伐木机是这样工作的:小x设计一个参数H,然后伐木机将一排N个树木砍倒,然后得到每棵树高于H的部分。比如,有4棵树,高度分别为20,15,10,17米,而小x将H设为了15米。这样,他从第一棵得到了5m的木材,第四棵得到了2m的木材,一共是7m。当然,如果一棵树的高度不大于H,那么就不会被砍倒,也就不会留下木材。小x是个环保主义者,他希望H尽可能大,这样他砍倒的树木可以尽可能少。当然,前提是小x能至少得到M米木材。

输入

第一行两个整数N,M,代表有N棵树,小x每天至少砍M米木材。

第二行N个整数Ai,代表每棵树的高度。

输出

一行一个整数,代表所要求的最大高度。

样例输入

4 7

20 15 10 17

样例输出

15

数据范围限制

对于30%的数据:1 ≤ N ≤1 000

对于100%的数据:

1 ≤ N ≤1 000 000

1 ≤ M ≤ 2 000 000 000

1 ≤ Ai ≤ 1 000 000 000

PS: 题目应该是没有不可能的情况,可以忽略

FIRST

.      假设有一个高度b就是我们要的答案,那么可以得出我们这么一个公式:

总高度和-保留的树木>=最少要得到的木材  就是

解不等式得到:   【表示学LaTeX的语法好艰难。。。】

那我们是不是只要根据这个不等式解出b就可以了?

Second

Of course not !

因为会出现这种情况:

Third

最终解法:

1.  把a数组qsort一遍,并按照不等式求出b

2.从最小a[1]的开始比较,如果b高于a[i] 那么把他们的差的绝对值分给其他的树

接着比较,直到a[i]<=b就停止循环,此时得到的b是一个实数,对其取整,输出

  PS:   pascal 的浮点数比较坑,  调试了半个小时,才发现要减去一个0.9999999....qwq

 1 {
 2     by @bobble !
 3                     2017-1-19
 4 }
 5 program eko;
 6 const
 7   inf=‘eko.in‘;
 8   outf=‘eko.out‘;
 9 var
10   m:int64;
11    sum,ans:qword;
12    aa,s2:Extended;
13    i,n:longint;
14    a:array[0..1000000] of int64;
15
16 procedure qsort(l,r:longint);
17 var
18    i,j,x,y:int64;
19 begin
20    i:=l;  j:=r;  x:=a[(l+r) div 2];
21    repeat
22      while a[i]<x do inc(i);
23      while x<a[j] do dec(j);
24      if not(i>j) then
25      begin
26         y:=a[i];   a[i]:=a[j];   a[j]:=y;
27         inc(i);    j:=j-1;
28      end;
29   until i>j;
30   if l<j then qsort(l,j);
31   if i<r then qsort(i,r);
32 end;
33
34 begin
35   assign(input,inf);
36   assign(output,outf);
37   reset(input); rewrite(output);
38
39   readln(n,m);
40
41   for i:= 1 to n do
42   begin
43     read(a[i]);
44     sum:=sum+a[i];
45   end;
46   qsort(1,n);
47
48   aa:=(sum-m)/n;
49
50   i:=1;
51   while aa>a[i] do
52   begin
53     s2:=(aa-a[i]);
54     aa:=aa+s2/(n-i);
55     inc(i);
56     if i>n then break;
57   end;
58   if trunc(aa-0.9999999)+1>a[i] then ans:=trunc(aa)
59     else ans:=trunc(aa-0.9999999)+1;
60   writeln(ans);
61
62   close(input);
63   close(output);
64 end.
时间: 2024-08-02 11:03:53

JZOJ 1724. eko(eko.pas/cpp)的相关文章

JZOJ 1725. MATH(math.pas/cpp)

1725. [10.6NOIP普及模拟]MATH(math.pas/cpp) (File IO): input:math.in output:math.out 时间限制: 1000 ms  空间限制: 256000 KB  具体限制 Goto ProblemSet 题目描述 小x正在做他的数学作业,可是作业实在太难了.题目是这样的: 1.给定一个含有N个数的数列V. 2.你可以从数列中恰好移除K个数,定义移除后的数列为V'. 3.定义M为V'中任意两个数的差的最大值,m为V'中任意两个数的差的最

腾讯安全团队深入解析wannacry蠕虫病毒

背景: 2017年5月12日,WannaCry蠕虫经过MS17-010漏洞在全球规模大迸发,传染了很多的计算机,该蠕虫传染计算机后会向计算机中植入敲诈者病毒,致使电脑很多文件被加密,这篇文章对其进行详细分析. 木马概况: WannaCry木马利用前阵子泄漏的方程式工具包中的"永恒之蓝"漏洞工具,进行网络端口扫描攻击,目标机器被成功攻陷后会从攻击机下载WannaCry木马进行感染,并作为攻击机再次扫描互联网和局域网其他机器,行成蠕虫感染大范围超快速扩散. 木马母体为mssecsvc.ex

腾讯安全反病毒实验室解读“Wannacry”勒索软件

背景 针对昨日英国医院被攻击,随后肆虐中国高校的 WannaCry 勒索事件,腾讯安全反病毒实验室第一时间给出了深度权威的分析.此次勒索事件与以往相比最大的亮点在于,勒索病毒结合了蠕虫的方式进行传播,传播方式采用了前不久 NSA 被泄漏出来的 MS17-010 漏洞.在 NSA 泄漏的文件中,WannaCry 传播方式的漏洞利用代码被称为"EternalBlue",所以也有的报道称此次攻击为"永恒之蓝". MS17-010 漏洞指的是,攻击者利用该漏洞,向用户机器的

股神小L 2016Vijos省选集训 day1

股神小L (stock.c/pas/cpp)============================ 小L厌倦了算法竞赛,希望到股市里一展身手.他凭借自己还行的计算机功底和可以的智商,成功建立一个模型预测了一支股票接下来n天的价格. 我们把这支股票第i天的价格称为a_i.在接下来n天里,每一天小L可以选择花费a_i买入一股或者卖出一股从而获得a_i元收入. 当然小L卖出股票的时候,自己的账户上必须要有至少一股的剩余.现在小L希望知道,在n天过去之后,采取最优策略的情况下自己最多赚到多少钱. 注意

兔子的晚会 2016Vijos省选集训 day1

兔子的晚会 (xor.c/pas/cpp)============================= 很久很久之前,兔子王国里居住着一群兔子.每到新年,兔子国王和他的守卫总是去现场参加晚会来欢庆新年. 在新年晚会上,兔子国王和他的守卫们坐在观众席的第一排,兔子国王坐在这排最中间的位置,然后国王两边各坐有恰好相同数目的n个守卫, 我们按照第一排从左到右的顺序为国王和守卫分别编号为1到2*n+1. 在晚会上,兔子们的脸上都洋溢着幸福的笑容,兔子国王为了量化自己和守卫们的幸福度,就将晚会开始时,为第i

2017清北精英班整理内容掌握考试题

精英班考试题 2017.2.10 题目名 工资 藏妹子之处 银河之星 源文件 money.cpp/c/pas excel.pas/cpp galaxy.cpp/c/pas 输入文件 money.in excel.in galaxy.in 输出文件 money.out excel.out galaxy.out 时间限制 1000MS 1000MS 1000MS 内存限制 256MB 128MB 256MB 测试点 10 10 10 测试点分值 10 10 10 第一题 工资 链接 第二题  藏妹子

BCB6 使用TZCompressionStream压缩

最近由于项目需要涉及到解压第三方公司的数据,在此做一下记录环境部署和使用方法,免得以后忘记.    对方公司的数据是通过TCompressionStream 压缩之后,存到数据库中,采用的delphi7.起初以为直接用TCompressionStream就能搞定,实际发现BCB 没有这个东西.需要另外部署. 上网搜索之后,发现本质是一个叫zlib的库. 我用的是 1.2.3版本,下载地址 http://www.base2ti.com/?id=delphi.zlib关于zlib的说明  http:

2014-7-7 NOIP模拟赛

1.无线通讯网(wireless.pas/cpp/c) [题目描述] 国防部计划用无线网络连接若干个边防哨所.2种不同的通讯技术用来搭建无线网络:每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都拥有卫星电话)均可以通话,无论他们相距多远.而只通过无线电收发器通话的哨所之间的距离不能超过D,这是受收发器的功率限制.收发器的功率越高,通话距离D会更远,但同时价格也会更贵. 收发器需要统一购买和安装,所以全部哨所只能选择安装一种型号的收发器

看无可看 分治FFT+特征值方程

题面: 看无可看(see.pas/cpp/c) 题目描述 “What’s left to see when our eyes won’t open?” “若彼此瞑目在即,是否终亦看无可看?” ------来自网易云音乐<Golden Leaves-Passenger> 最后的一刻我看到了...... 一片昏暗? 我记起来了, 我看到,那里有一个集合S,集合S中有n个正整数a[i](1<=i<=n) 我看到,打破昏暗的密码: 记忆中的f是一个数列,对于i>1它满足f(i)=2*