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
解析:其实去画一画或想一下就会发现,米仓在两个稻田间的任意位置,两个稻田的运费之和都相等,那么我们不如直接考虑将它建在哪一块稻田上。
二分枚举稻田数x,然后用一个for循环来枚举我们所假想收割的x个稻田中最左边的那个稻田位置为l,然后通过x推出r,mi(最右边的位置和中间位置)。谷仓在中间时为最优解(这个自己去试试画出来想)所以谷仓位置为mi。好啦那么我们枚举的这段区间的费用是多少呢?可能很多人会和我一样第一反应是用一个for循环来计算,可是之前的枚举已经是O(nlogn)了,这就决定了我们的计算最好复杂度为O(1)。我们用前缀和来实现。首先设费用为sum,f为一个数组,这个数组中f[i]储存的是1~i块稻田的坐标和,a数组用来储存每块稻田的坐标,设一个变量now来表示米仓的坐标(就是a[now]),则公式为:
  sum=now*(mi-l)-(f[mi-1]-f[l-1])+(f[r]-f[mi])-now*(r-mi); 
为什么这么做呢,下面来解释一下。
我们需要把区间分成左右两边来做,左边的费用等于=now-a[l]+now-a[l+1]+now-a[l+2]+....+now-a[mi-1];我们可以发现他是有多个now-a[?]组合而成,有几项呢?不拿算出总共有mi-l(不是数字1是L!)项,则式子变为=now*(mi-l)-(a[l]+a[l+1]+a[l+2]+....+a[mi-1]);好啦那么a[l]+..+a[mi-1]即为第l块稻田到第mi-1块稻田的坐标之和,完全可以用前缀和直接表示成f[mi-1]-f[l-1],好啦左边的式子最终成为:now*(mi-l)-(f[mi-1]-f[l-1]),同理右边的式子也可以这样推出来(不写啦)。
算出sum后只要比B元小,就成立了,否则不成立。
程序:

#include<iostream>
#include<cstdio>
using namespace std;
long long f[100010],now,k,ans,a[100010],sum,n,l,b,lef,righ,mid;
bool check(long long x)
{int i,l,r,mi;for (i=1;i<=n-x+1;++i){l=i;(最左边的稻田) r=i+x-1(最右边的稻田); mi=(l+r)/2(米仓);now=a[mi];(米仓坐标)sum=now*(mi-l)-(f[mi-1]-f[l-1])+(f[r]-f[mi])-now*(r-mi);
(式子的具体推法已经写在上面了)if (sum<=b) return true;}return false;
}
int main()
{cin>>n>>l>>b;for (int i=1;i<=n;++i) cin>>a[i];f[0]=0;for (int i=1;i<=n;++i) f[i]=f[i-1]+a[i];(前i个稻田的坐标之和)lef=0;righ=n+1;ans=0;while (lef<=righ) (枚举有几块稻田能收割){mid=(lef+righ)/2;if (check(mid)==true) {lef=mid+1;if (ans<mid) ans=mid;}else righ=mid-1;} cout<<ans<<endl;return 0;
}

好啦好啦。

转载于:https://www.cnblogs.com/2014nhc/p/6208118.html

2600: [Ioi2011]ricehubh相关推荐

  1. bzoj 2600: [Ioi2011]ricehub

    2600: [Ioi2011]ricehub Description 乡间有一条笔直而长的路称为"米道".沿着这条米道上 R 块稻田,每块稻田的坐标均 为一个 1 到 L 之间(含 ...

  2. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  3. 「2019嵌入式智能国际大会」 399元超值学生票来啦,帮你豪省2600元!

    2019 嵌入式智能国际大会即将来袭!购票官网:https://dwz.cn/z1jHouwE 物联网是继计算机.互联网和移动通信之后的又一次信息产业的革命性发展,在互联网和移动互联网高速发展的时代, ...

  4. ICLR 2020论文投稿2600篇,GNN、BERT、Transformer领跑热门研究方向

    (图片由AI科技大本营付费下载自视觉中国) 出品 | AI科技大本营(ID:rgznai100) 2019 年 4,ICLR 2020 论文征集活动开始,截止 9 月 25 日,大会共收到近 2600 ...

  5. 中国移动物联网客户规模突破2600家 联网接入终端达2300万台

    中国移动副总裁李正茂发表了题为<搭建万物互联开放平台,助力小微企业创新创业>的演讲.在演讲中,李正茂表示,物联网是国家提出的"大众创业.万众创新"战略和"中国 ...

  6. 全球最大中文单体模型来了!2600亿参数,AI产业规模化应用可期

    金磊 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 上学时候,有的同学花费大量时间去死记硬背,成绩却不一定好. 而学霸们往往有这样的心得:在刷题之外还要总结知识体系,事半功倍. 人学习过 ...

  7. x5675相当于e5_至强X5675比I7 2600强多少 至强X5675相当于几个AMD X2 220

    满意答案 hsaoeueh657 推荐于 2017.09.30 采纳率:48%    等级:9 已帮助:1163人 1.至强X5675与I7 2600对比,Intel Xeon X5675CPU虽然主 ...

  8. cisco 2600的密码破解

    2014-6-7上班以来看到一台不知何时闲置的Cisco 2600路由器设备,当时是多么NB的Router,如今变成了"二货",拿来练练手,丢了2年的命令不知是否还记得多少?印象中 ...

  9. P4149 [IOI2011]Race

    P4149 [IOI2011]Race 题意: 给一棵树,每条边有权.求一条简单路径,权值和等于 k,且边的数量最小. 题解: 用t[i]:长度为i的路径包含的最少边数 按照子树顺序,依次用dep[u ...

最新文章

  1. 阿里云云盾-智能风控(公测)发布
  2. swoole-co-pool v1.0.1,Swoole 协程工作池
  3. 字符串——垂直柱状图(洛谷 P1598)
  4. 后台开发(1)---app后台开发入门
  5. Android三大动画介绍及使用
  6. ts中简单的用法和存储器 get set 的用法
  7. e580显卡驱动_联想e580显卡驱动下载-联想e580笔记本显卡驱动v25.20.15012.2005 官方版 - 极光下载站...
  8. 分享微云普通用户不限速下载方法
  9. 手写输入---随手写
  10. 将网易博客搬家迁移至CSDN指南:163博客关闭前的备份导出与迁移方法
  11. 主流低功耗服务器u,新组低功耗NAS服务器(1037U)分享
  12. 佳文分享:CAP定理
  13. 原生小程序 之引入 icon字体图标
  14. mysql属于dbms还是dbs_DB、DBMS和DBS三者之间有什么关系_数据库
  15. php安全新闻早八点-Microdoor-第四季
  16. Booth编码乘法器以及测试代码
  17. php解析word文档
  18. CAN通信的BusOff功能
  19. 对移动医疗浅陋的理解
  20. 标准word行间距格式

热门文章

  1. c mysql 设置字符集_MYSQL字符集设置的方法详解(终端的字符集)
  2. 空格的ascii码_美国信息交换标准代码ASCII
  3. 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task1地理数据分析常用工具
  4. python热成像_在python中自动从图像中移除热/死像素
  5. txt文档批量转为excel_Excel高级技巧-批量导入txt文件里的数据
  6. 一文带你学会 UML 统一建模语言
  7. PL/SQL Developer如何连接64位的Oracle图解
  8. [图神经网络] 图神经网络GNN基础入门
  9. 【dlib opencv - detector landmark】 ubuntu上针对dlib-hog和opencv haar人脸检测与landmar-68在不同平台上运行时间实验结果汇总
  10. 检测和语义分割_分割和对象检测-第1部分