bzoj 2600 ricehub

2600: [Ioi2011]ricehub

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 783  Solved: 417
[Submit][Status][Discuss]

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

【题目大意】

找一个点 使他在价值现值内控制最多的点。

【吐槽】long long保平安

【code】

#include<iostream>
#include<cstdio>
using namespace std;
int R,L,ans,x[100005];
long long B,sum[100005];
long long cost(int l,int r) {
    int m=(l+r)/2;
    long long tmp=(m-l+1)*x[m]-(sum[m]-sum[l-1])+sum[r]-sum[m]-(r-m)*x[m];
    return tmp;
}
int main() {
    scanf("%d%d%lld",&R,&L,&B);
    for(int i=1; i<=R; i++) {
        scanf("%d",&x[i]);
        sum[i]=sum[i-1]+x[i];
    }
    for(int i=1,j=1; j<=R; j++) {
        while(cost(i,j)>B)i++;
        ans=max(ans,j-i+1);
    }
    printf("%ld\n",ans);
    return 0;
}
时间: 2025-01-01 20:48:19

bzoj 2600 ricehub的相关文章

BZOJ 2600: [Ioi2011]ricehub

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

BZOJ 2600 IOI2011 ricehub 中位数

题目大意:给定一条道路上的n个稻田,要求建一个粮仓,并且选定一些稻田进行运输,这些稻田到粮仓的距离之和不能超过B,求最多能选择多少个稻田 维护一个队列,头指针从前到后扫一遍 如果发现尾指针到头指针这段稻田的中位数上建一个粮仓时距离之和超过了B,就调整尾指针 对距离维护一个前缀和 每次取中位数之后可以O(1)计算距离和 #include <cstdio> #include <cstring> #include <iostream> #include <algorit

BZOJ 2600 IOI 2011 ricehub 二分

题目大意:给出粮食的位置,给出初始的钱数,问粮仓设在哪里会让收到的粮食最多.粮食运到粮仓需要花费|x - x'|的费用. 思路:看到L和B的范围都大的惊人,只能从R来下手.能不能从每个粮食的位置入手来搞点什么. 首先要想收购的尽量多,收购的粮食应该是一段连续的区间.对于每个粮食的位置,以这个粮食的位置为起点所能够收购到的粮食是单调的.这个就可以二分来确定了.一段区间内到达所有点最近的点是中位数,所以就可以O(1)判断了. (这真的是IOI题么.. CODE: #include <cstdio>

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[

【BZOJ】【2157】旅游

LCT 直到动手写拆边为点的时候才发现根本不会写……去orz了一下Hzwer(话说这题应该也用不着LCT吧……下次再换种姿势写一遍好了) 1 /************************************************************** 2 Problem: 2157 3 User: Tunix 4 Language: C++ 5 Result: Accepted 6 Time:668 ms 7 Memory:2600 kb 8 *****************

[Ioi2011]ricehub

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

【BZOJ 3926】 [Zjoi2015]诸神眷顾的幻想乡 (广义SAM)

3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 974  Solved: 573 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看.幽香当然也非常高兴啦. 这时幽香发现了一件非常有趣的事情,太阳花田有n块空地.在过去,幽香为了方便,在这n块空地之间修建

BZOJ 1013: [JSOI2008]球形空间产生器sphere

二次联通门 : BZOJ 1013: [JSOI2008]球形空间产生器sphere /* BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元 QAQ SB的我也能终于能秒题了啊 设球心的坐标为(x,y,z...) 那么就可以列n+1个方程,化化式子高斯消元即可 */ #include <cstdio> #include <iostream> #include <cstring> #define rg register #define Max

bzoj 3309 DZY Loves Math - 莫比乌斯反演 - 线性筛

对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b). Input 第一行一个数T,表示询问数. 接下来T行,每行两个数a,b,表示一个询问. Output 对于每一个询问,输出一行一个非负整数作为回答. Sample Input 4 7558588 9653114 6514903 445