2600 米仓 大视野评测

Description

乡间有一条笔直而长的路称为“米道”。沿着这条米道上 R 块稻田,每块稻田的坐标均
为一个 1 到 L 之间(含 1 和 L)的整数。这些稻田按照坐标以不减的顺序给出,即对于 0 ≤ i <
R,稻田 i 的坐标 X[i]满足 1 ≤ X[0] ≤ ... ≤ X[R-1] ≤ L。 
注意:可能有多块稻田位于同一个坐标上。 
我们计划建造一个米仓用于储存尽可能多的稻米。和稻田一样,米仓将建在米道上,其
坐标也是一个 1 到 L 之间的整数(含 1 和 L)。这个米仓可以建在满足上述条件的任一个位
置上,包括那些原来已有一个或多个稻田存在的位置。 
在收获季节,每一块稻田刚好出产一滿货车的稻米。为了将这些稻米运到米仓,需要雇
用一位货车司机来运米。司机的收费是每一满货车运送一个单位的距离收取 1 元。換言之,
将稻米从特定的稻田运到米仓的费用在数值上等于稻田坐标与米仓坐标之差的绝对值。 
不幸的是,今年预算有限,我们至多只能花费 B 元运费。你的任务是要帮我们找出一个
建造米仓的位置,可以收集到尽可能多的稻米。

Input

第一行 三个整数 R L B
接下来R行 每行一个整数 表示X[i]

Output

一个整数 最多稻米数

Sample Input

5 20 6

1

2

10

12

14

Sample Output

3

HINT

1 ≤ R ≤ 100,000

1 ≤ L ≤ 1,000,000,000

0 ≤ B ≤ 2,000,000,000,000,000

HINT

Source

http://www.lydsy.com/JudgeOnline/problem.php?id=2600

这道题我个人的算法是二分+枚举,网上应该还有更好的算法,在这里不多说。

首先二分可以取得几个米仓的粮食。

然后check,枚举左端点,判断可行性。

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 long long f[100010],now,k,ans,a[100010],sum,n,l,b,lef,righ,mid;
 5 bool check(long long x)
 6 {
 7   int i,l,r,mi;
 8   for (i=1;i<=n-x+1;++i)
 9   {
10       l=i; r=i+x-1; mi=(l+r)/2;
11       now=a[mi];
12       sum=now*(mi-l)-(f[mi-1]-f[l-1])+(f[r]-f[mi])-now*(r-mi);
13       //cout<<x<<‘ ‘<<i<<‘ ‘<<sum<<endl;
14       if (sum<=b) return true;
15   }
16   return false;
17 }
18 int main()
19 {
20   cin>>n>>l>>b;
21  for (int i=1;i<=n;++i) cin>>a[i];
22  f[0]=0;
23  for (int i=1;i<=n;++i) f[i]=f[i-1]+a[i];
24  lef=0;
25  righ=n+1;
26  ans=0;
27  while (lef<=righ)
28  {
29      mid=(lef+righ)/2;
30      if (check(mid)==true)
31      {
32       lef=mid+1;
33       if (ans<mid) ans=mid;
34      }
35         else righ=mid-1;
36   }
37   cout<<ans<<endl;
38   return 0;
39 }

优化:前缀和

时间: 2024-10-13 09:10:47

2600 米仓 大视野评测的相关文章

1639 月度开支 大视野评测

Description Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的.他已经计算了他以后N(1<=N<=100,000)个工作日中每一天的花费moneyi(1<=moneyi<=10,000),他想要为他连续的M(1<=M<=N)个被叫做"清算月"的结帐时期做一个预算,每一个"清算月"包含一个工作日或更多连续的工作日,每一个工作日都仅被包含在一个&quo

lydsy 2600(二分+中位数前缀和)米仓

2600: [Ioi2011]ricehub Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 691  Solved: 359[Submit][Status][Discuss] Description 乡间有一条笔直而长的路称为"米道".沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ≤ i <R,稻田 i 的坐标 X[i]满足 1 ≤ X[

IOI 2011 Rice Hub 米仓

题目 分析 首先来观察一下这题的数据范围,Subtask 4当中的数据量10^15大到惊人的程度.很显然这是我们所不能够处理的数据量.但转而看R的大小,就令人能够接受了,那么不难想到,这里有一个离散化的思路. 然后我们考虑如何安排这个米仓.这个米仓其实就相当于一个"中位数",也就是安排在米仓能够处理的区间的正当中. 这里出现了一个"区间"的概念,那么我们就可以想到用一个类似二分的思想来枚举区间的左右边界. 首先O(R)枚举左边界,然后嵌一个while查右边界,写一个

#10.09# 活动预告:iPad大奖,快来Mark 9大产品评测活动!

#10.09#活动预告:iPad大奖,快来Mark 9大产品评测活动! 亲爱的阿里云小伙伴们: 云产品的多样性(更多的云产品)也是让用户深度使用云计算的关键.今年阿里云产品线越来越丰富,小云搜罗了一下,居然有9个产品在免费公测. 为了协助您上手新的云产品,借助阿里云9大产品免费公测活动,您可以测试工作负载,运行应用程序:还可以通过评测文章交流,学习到更多知识,为您构建合适的云产品解决方案. 趁UED哥哥在忙着做活动页面,虽然还要等好几天才能做好活动页面,可素,我已等不及要把活动的好消息放出来啦.

IOI2011ricehub米仓

Description 乡间有一条笔直而长的路称为"米道".沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ≤ i <R,稻田 i 的坐标 X[i]满足 1 ≤ X[0] ≤ ... ≤ X[R-1] ≤ L. 注意:可能有多块稻田位于同一个坐标上. 我们计划建造一个米仓用于储存尽可能多的稻米.和稻田一样,米仓将建在米道上,其坐标也是一个 1 到 L 之间的整数(含 1 和 L). 这个米

VS大视野

vs的本质:他是微软公司的员工一起开发的一个项目: 既然是项目:那么就是用编程语言编出来的! 用的是C# C#有他的特点:继承,封装,多态!等 我们在使用vs的时候,为什么可以使用很多的里面已经存在的方法呢!因为微软的人员将方法都编译成了dll文件,导入到vs里面了!所以我们可以使用String,int ,datetime等类型! 而且我们也可以引用其他的dll,只要可以用就可以! VS大视野

数据分析挖掘培训课程-加米谷大数据

加米谷数据分析与挖掘课程体系包括5个板块.9个阶段.200+模块以及4个真实项目实战. 第一阶段 Python基础 学习内容:Python基础 学习目标:基本语法.数据结构.算法及函数.文件系统 ... 等 学习效果:掌握Python基本知识,能熟练运用到项目 第二阶段 关系型数据库MySQL 学习内容:关系型数据库MySQL 学习目标:数据库设计.数据库范式及ACID特性.视图及索引 学习效果:掌握关系型数据库MySQL的用法,能熟练运用到项目 第三阶段 文档数据库MongoDB 学习内容:文

加米谷大数据:2018年大数据依然是认知误区+人才紧缺

大数据现在很热,企业.个人都在谈论,每个人对大数据有着自己不同的看法和观点,很多朋友对大数据仍然具有一些观念上的误区,比如很多人会认为大数据是一个最新的技术,还有一些朋友认为多有数据只服务自己一个人等等. 大数据不是一项最新技术 大数据现在已经融入我们的生活,人们在日常工作办公的时候都会接触到大数据,这些大量数据总会以不同的形式,以及庞大的数量存在和运用,这也导致了很多朋友认为大数据是当今一项最新的技术.其实不然,大数据可以算是一项新的术语或技术词汇,但是针对于大数据的海量数据分析的概念和技术层

大数据发展平台:成都大数据产业调研小组莅临加米谷大数据调研

加米谷学院消息: 7月4日下午,成都市新经济委.成都市大数据产业调研小组莅临加米谷大数据调研指导,加米谷大数据创始人张安文.张衡积极配合大数据产业调研小组,进行关于"成都市大数据企业发展状况.存在问题"的考察调研活动,为加快推进大数据产业发展,为科学制定相关政策提供见解和建议. 加米谷大数据创始人与调研小组交谈 本次调研,是成都市为加快推进大数据产业,为科学制定大数据相关政策而进行的活动调查.加米谷大数据作为成都市大数据人才培养的重点机构之一,成为本次的调研调查对象之一. 发展成都市大