题干:

给定N朵花的原先的高度,从左到右排列,最多浇水m天,每天只能浇一次,每次使得连续的w朵花的高度增长1,问最后最矮的花的高度最高是多少。

Examples

Input

6 2 3
2 2 2 2 1 1

Output

2

Input

2 5 1
5 8

Output

9

Note

In the first sample beaver can water the last 3 flowers at the first day. On the next day he may not to water flowers at all. In the end he will get the following heights: [2, 2, 2, 3, 2, 2]. The smallest flower has height equal to 2. It's impossible to get height 3 in this test.

解题报告:

直接二分即可。树状数组差分维护区间更新,复杂度O(nlognlogn),其实可以优化到nlogn,直接用一个变量维护增量即可。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 4e5 + 5;
ll n,m,w,a[MAX];
ll c[MAX];
int lowbit(int x) {return x&-x;}
ll sum(int x) {ll res = 0;while(x) {res += c[x];x -= lowbit(x);} return res;
}
void update(int x,ll val) {while(x < MAX) {c[x] += val;x += lowbit(x);}
}
bool ok(ll x) {ll cnt = 0,tmp;for(int i = 1; i<=n+w+1; i++) c[i]=0;for(int i = 1; i<=n; i++) {tmp = sum(i);if(a[i] + tmp < x) {cnt += (x-a[i]-tmp);update(i,x-a[i]-tmp);update(i+w,-(x-a[i]-tmp));}} return cnt <= m;
}
int main()
{cin>>n>>m>>w; for(int i = 1; i<=n; i++) scanf("%lld",a+i);ll l = 0,r = 2e9,mid,ans;while(l<=r) {mid = (l+r)>>1;if(ok(mid)) l = mid+1,ans = mid;else r = mid-1;}printf("%lld\n",ans);return 0 ;
}

【CodeForces - 460C】Present(二分+树状数组)相关推荐

  1. 【bzoj4009】[HNOI2015]接水果 DFS序+树上倍增+整体二分+树状数组

    题目描述 给出一棵n个点的树,给定m条路径,每条路径有一个权值.q次询问求一个路径包含的所有给定路径中权值第k小的. 输入 第一行三个数 n和P 和Q,表示树的大小和盘子的个数和水果的个数. 接下来n ...

  2. jzoj4050-寻宝游戏【二分,树状数组,LCA】

    正题 题目链接:https://jzoj.net/senior/#contest/show/3017/1 题目大意 nnn个点的一棵树,mmm次操作,修改一个地方的宝藏. 每次操作后求拿完所以宝藏并回 ...

  3. bzoj4418 [Shoi2013]扇形面积并 扫描线+二分+树状数组

    Description 给定N个同心的扇形,求有多少面积,被至少K个扇形所覆盖. 对于100%的数据,1≤n≤105, 1≤m≤106,1≤k≤5000,1≤ri≤105,-m≤a1,a2≤m Sol ...

  4. 【BZOJ2738】矩阵乘法 [整体二分][树状数组]

    矩阵乘法 Time Limit: 20 Sec  Memory Limit: 256 MB [Submit][Status][Discuss] Description 给你一个N*N的矩阵,不用算矩阵 ...

  5. HDU多校1 - 6756 Finding a MEX(分块+二分+树状数组)

    题目链接:点击查看 题目大意:给出一个 n 个点和 m 条边的无向图,每个点都有一个权值,现在需要执行 q 次操作,每次操作分为两种类型: 1 pos val :将第 pos 个点的权值修改为 val ...

  6. P3527 [POI2011]MET-Meteors 整体二分 + 树状数组

    洛谷 题意: 思路: 考虑整体二分前,一定要思考一下直接二分怎么做.显然对每个城市,当<pos<pos<pos的时候收集不够足够的陨石,>=pos>=pos>=po ...

  7. P3527-[POI2011]MET-Meteors【整体二分,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P3527 题目大意 mmm个格子形成的环,有nnn个集合,第iii个格子属于第oio_ioi​个集合,kkk次让环上 ...

  8. P3573-[POI2014]RAJ-Rally【拓扑排序,二分+树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P3573 题目大意 nnn个点mmm条边的DAGDAGDAG,删掉一个点使得最长路最短. 解题思路 先跑一遍拓扑排序 ...

  9. ACM学习历程—51NOD 1685 第K大区间2(二分 树状数组 中位数)

    http://www.51nod.com/contest/problem.html#!problemId=1685 这是这次BSG白山极客挑战赛的E题. 这题可以二分答案t. 关键在于,对于一个t,如 ...

最新文章

  1. 陌陌股价过山车背后隐藏了什么?
  2. NFS 网络挂载问题 解决
  3. CSS解决高度自适应问题
  4. matlab中ismember_MATLAB 代码格式化简易版
  5. Linux驱动学习笔记之并发控制
  6. 基于python的系统构建_利用python构建一个简单的推荐系统
  7. 在 iOS 或者 Mac OS X 中将 NSDictionary 映射为本地对象的方法
  8. 阶梯英语2006年年终大会主持人发言稿
  9. jquery remove()不兼容问题解决方案
  10. 前沿技术分享,让你在算法圈“技”高一筹
  11. HTML5之美一 --- 转载
  12. AI独角兽商汤科技的内部服务容器化历程
  13. Python Django 初试手记
  14. 小程序如何跳转至同服务器app,小程序新功能,app可以直接跳转小程序
  15. 泰晤士2021计算机科学排名,重磅!2021泰晤士学科排名发布!
  16. png转ico 或如何制作ico文件
  17. Bootstrap-button btn样式
  18. Codeforces 1359 C. Mixing Water (二分 /数学)
  19. python html转pdf 调整大小_用Python将HTML转为PDF。
  20. 计算:[(1*2*4+2*4*8+...+n*2n*4n)/(1*3*9+2*6*18+...+n*3n*9n)]^2的值

热门文章

  1. 莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv
  2. 推荐笔记本用户使用的硬盘。。。2.5”战胜台式机硬盘 日立7K320-250GB
  3. 前端中标签页的手写方法
  4. vue 生命周期_Vue生命周期小白看了都会的
  5. 自动产生fsm代码的工具_代码自动生成工具
  6. 初学python的format之美
  7. 连接mysql报错有乱码_连接mysql服务器报错时,出现乱码
  8. 《C语言深度解剖》中的.c/.h 程序模板及函数注释风格
  9. edge浏览器什么相当于ie的中低_Microsoft Edge浏览器
  10. a5d2 phy驱动