bzoj 2792: [Poi2012]Well【二分+贪心】
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1000005;
int n,a[N],b[N];
long long m,f[N],s[N];
int ok(int w)
{
long long ans=0;
for(int i=1;i<=n;i++)
b[i]=a[i];
for(int i=2;i<=n;i++)
if(b[i]-b[i-1]>w)
ans+=b[i]-b[i-1]-w,b[i]=b[i-1]+w;
for(int i=n-1;i>=1;i--)
if(b[i]-b[i+1]>w)
ans+=b[i]-b[i+1]-w,b[i]=b[i+1]+w;
for(int i=1;i<=n;i++)
s[i]=s[i-1]+b[i];
if(ans>m)
return 0;
for(int i=1,j=1;i<=n;i++)
{
while(j<i&&b[j]<=1ll*(i-j)*w)
j++;
f[i]=s[i-1]-s[j-1]-1ll*(i-j)*(i-j+1)/2*w;
}
for(int i=n,j=n;i;i--)
{
while(j>i&&b[j]<=1ll*(j-i)*w)
j--;
f[i]+=s[j]-s[i]-1ll*(j-i)*(j-i+1)/2*w;
}
for(int i=1;i<=n;i++)
if(b[i]+f[i]+ans<=m)
return i;
return 0;
}
int main()
{
int l=0,r=0,ans=0;
scanf("%d%lld",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]),r=max(r,a[i]);
while(l<=r)
{
int mid=(l+r)>>1;
if(ok(mid))
r=mid-1,ans=mid;
else
l=mid+1;
}
printf("%d %d",ok(ans),ans);
return 0;
}
bzoj 2792: [Poi2012]Well【二分+贪心】的更多相关文章
- BZOJ 2792 Poi2012 Well 二分答案
题目大意:给定一个非负整数序列A.每次操作能够选择一个数然后减掉1,要求进行不超过m次操作使得存在一个Ak=0且max{Ai−Ai+1}最小,输出这个最小值以及此时最小的k 二分答案,然后验证的时候首 ...
- bzoj 2792 [Poi2012]Well 二分+dp+two_pointer
题目大意 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某个k满足Xk=0,并且z=max{|Xi - Xi+1|}最小. 输出最 ...
- bzoj 2067 [Poi2004]SZN——二分+贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2067 最少的线段可以贪心地想出来.(结果还是写错了)就是偶数孩子可以自己配对,奇数孩子要带一 ...
- BZOJ_2792_[Poi2012]Well_二分答案
BZOJ_2792_[Poi2012]Well_二分答案 Description 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某 ...
- Codeforces Gym 100231B Intervals 线段树+二分+贪心
Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...
- 2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 二分+贪心
/** 题目:2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 链接:http://codeforces.com/gym/101194 题意:给n个木块,堆 ...
- 【bzoj2097】[Usaco2010 Dec]Exercise 奶牛健美操 二分+贪心
题目描述 Farmer John为了保持奶牛们的健康,让可怜的奶牛们不停在牧场之间 的小路上奔跑.这些奶牛的路径集合可以被表示成一个点集和一些连接 两个顶点的双向路,使得每对点之间恰好有一条简单路径. ...
- Codeforces_732D_(二分贪心)
D. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- CF732D Exams 二分 贪心
思路:二分+贪心 提交次数:10次以上 错因:刚开始以为二分(边界,$+1or-1$)写错了,调了半天,后来才发现是$ck()$写错了.开始只判了最后是否小于零,而应该中间一旦小于零就$return\ ...
随机推荐
- 【转载】javascript中的函数对象
原文地址:http://www.cnblogs.com/phpzxh/archive/2009/09/16/1568137.html[侵删] 在javascript中函数的申明方式有四种 下面代码中一 ...
- iOS textView在调用textViewDidChange方法,中文输入的问题
有时候,需要在textViewDidChange处理时,在中文输入的情况下,例如输入“中”,对应的拼音“zhong”, 在textViewDidChange的方法里会把拼音也算进去:导致输入中文时也输 ...
- 210 Course ScheduleII
/* * 210 Course ScheduleII * 2016-6-9 by Mingyang * http://www.jyuan92.com/blog/leetcode-course-sche ...
- Java基础教程:tutorialspoint-java
来自turorialspoint的Java基础教程(英文),官网:https://www.tutorialspoint.com/java/index.htm 这个教程在国内已经被翻译成中文(不过是属于 ...
- JAVA 比较两张图片的相似度的代码
原文:http://www.open-open.com/code/view/1448334323079 import java.awt.image.BufferedImage; import java ...
- ArcGIS Engine三维动画开发 来自:http://www.iarcgis.com/?p=826
ArcGIS Engine 三维开发 来自:http://www.iarcgis.com/?p=826 在三维中,经常使用的一个功能就是播放动画,也就是我们要对一条动画轨迹进行播放,而在ArcGIS ...
- OpenWrt 安装python-sqlite3失败
https://dev.openwrt.org/ticket/12239 #12239 reopened defect Sqlite3 missing in python 汇报人: dgspai@- ...
- iOS设计模式 - (1)概述
近期可自由安排的时间比較多, iOS应用方面, 没什么好点子, 就先放下, 不写了.花点时间学学设计模式. 之后将会写一系列博文, 记录设计模式学习过程. 当然, 由于我自己是搞iOS的, 所以之后设 ...
- 深入理解 C 指针阅读笔记 -- 第六章
Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct _ ...
- 自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题
由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach ...