CF #262 (DIV2) C . Present (二分答案)
来源:互联网 发布:手机二手市场淘宝网 编辑:程序博客网 时间:2024/05/20 16:34
Little beaver is a beginner programmer, so informatics is his favorite subject. Soon his informatics teacher is going to have a birthday and the beaver has decided to prepare a present for her. He plantedn flowers in a row on his windowsill and started waiting for them to grow. However, after some time the beaver noticed that the flowers stopped growing. The beaver thinks it is bad manners to present little flowers. So he decided to come up with some solutions.
There are m days left to the birthday. The height of thei-th flower (assume that the flowers in the row are numbered from1 to n from left to right) is equal toai at the moment. At each of the remainingm days the beaver can take a special watering and waterw contiguous flowers (he can do that only once at a day). At that each watered flower grows by one height unit on that day. The beaver wants the height of the smallest flower be as large as possible in the end. What maximum height of the smallest flower can he get?
The first line contains space-separated integers n,m and w(1 ≤ w ≤ n ≤ 105; 1 ≤ m ≤ 105). The second line contains space-separated integers a1, a2, ..., an(1 ≤ ai ≤ 109).
Print a single integer — the maximum final height of the smallest flower.
6 2 32 2 2 2 1 1
2
2 5 15 8
9
二分最终的结果,然后判断是否合法。即在当前的最终最大的高度下,是否m次可以达到。
#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <set>#include <stack>#include <cctype>#include <algorithm>#define lson o<<1, l, m#define rson o<<1|1, m+1, rusing namespace std;typedef long long LL;const int mod = 99999997;const int MAX = 2000000000;const int maxn = 300005;LL n, m, w;LL sum[maxn], a[maxn];bool ok(LL mi) { memset(sum, 0, sizeof(sum)); LL cur, cnt = 0; for(int i = 0; i < n; i++) { if(i > 0) sum[i] += sum[i-1]; cur = sum[i] + a[i]; if(cur < mi) { cnt += mi - cur; sum[i] += mi - cur; sum[i+w] -= mi - cur; } } if(cnt > m) return true; return false;}int main(){ cin >> n >> m >> w; for(int i = 0; i < n; i++) cin >> a[i]; LL l = 0, r = MAX; while(r - l > 1) { LL mid = (l+r) >> 1; if(ok(mid)) r = mid; else l = mid; } cout << l << endl; return 0;}
- CF #262 (DIV2) C . Present (二分答案)
- CF#262(div2) C——Present(二分)
- codeforces #262 DIV2 C题Present(二分+贪心)
- Codeforces 460C —— Present(二分答案)
- Codeforces#374(div2)- C. Journey(二分答案+dp)
- Cf 361div2 C [二分]
- CF 174(div2) C
- CF 171 (div2)C
- Codeforces 460C Present 二分答案
- CF round 419 (div2)C题
- CF Round#424(div2)D题 二分+贪心
- cf div2(262)c题
- CF 183(div2)
- CF 162(div2)
- Codeforces #262 (Div. 2) C. Present(二分+贪心)
- Codeforces Round #262 (Div. 2) 460C. Present(二分)
- CodeForces 460C--- Present(二分+贪心)
- C. Present(二分加贪心)
- mybatis使用---利用mybatis-generator自动生成mapper、model、mapper.xml
- Java线程的一些面试知识
- c/c++内存释放知识总结
- POJ—3253—Fence Repair—【贪心】【优先队列】
- 数据挖掘笔记-聚类-DBSCAN-文档聚类
- CF #262 (DIV2) C . Present (二分答案)
- spring security 权限验证
- mysql定时任务
- JSON-C结构介绍、使用
- COCOS2DX学习之Box2d物理引擎使用之------动态物体的创建
- iOS 检测版本更新
- Python 打印某一目录下所有文件名
- C/C++语言变量声明内存分配
- 欧几里得的最大公约数!!!!(c/c++)