给定一个非负整数序列A,每次操作可以选择一个数然后减掉1,要求进行不超过m次操作使得存在一个Ak=0且max{|Ai−Ai+1|}最小,输出这个最小lk以及最小值。

Solution

最大值最小,显然是需要二分的,而且我们发现答案确实是有单调性的。

接下来我们正着扫一遍整个序列,把差值大于二分出来的值的数调整值合法。

接下来我们就要考虑ak=0的情况,这个东西并没有什么单调性,我们只能从头枚举,直到找到第一个满足要求的就可以了。

考虑当一个数变成零之后,为了满足我们二分出来的答案,我们需要构造这样一个东西。

0                      0

0 0                0 0

0 0 0          0 0 0

0 0 0 0    0 0 0 0

0 0 0 0 0 0 0 0 0

两边是等差数列,为了计算序列的长度,我们需要计算出两个数组表示当ai=0是等差数列的左端点和右端点。

我们可以把左右分开算。

比如计算右端点,我们从i向右暴力扩展,当发现当前数字的值小于目标值是就不再扩展了,因为后面已经符合要求了。

最后枚举点,用等差数列求和算一下就可以了。

Code

#include<iostream>
#include<cstdio>
#define N 1000002
using namespace std;
typedef long long ll;
ll ans2,ans,b[N],s1[N],le[N],ri[N],a[N],n,m,sum[N];
bool check(ll pos){
ll num=;
for(int i=;i<=n;++i)b[i]=a[i];
for(int i=;i<=n;++i)
if(b[i]-b[i-]>pos)num+=b[i]-b[i-]-pos,b[i]=b[i-]+pos;
if(num>m)return ;
for(int i=n-;i>=;--i)
if(b[i]-b[i+]>pos)num+=b[i]-b[i+]-pos,b[i]=b[i+]+pos;
if(num>m)return ;
for(int i=;i<=n;++i)sum[i]=sum[i-]+b[i];
for(int i=,j=;i<=n;++i){
while(b[j]<=(i-j)*pos&&j<i)j++;
le[i]=j;
}
for(int i=n,j=n;i>=;--i){
while(b[j]<=(j-i)*pos&&j>i)j--;
ri[i]=j;
}
for(int i=;i<=n;++i)
if((num+sum[ri[i]]-sum[le[i]-]-pos*((i-le[i])*(i-le[i]+)+(ri[i]-i)*(ri[i]-i+))/)<=m)
{ans=i;return ;}
return ;
}
int main(){
scanf("%lld%lld",&n,&m);
ll l=,r=1e9;
for(int i=;i<=n;++i)scanf("%lld",&a[i]);
while(l<=r){
int mid=(l+r)>>;
if(check(mid)){
ans2=mid;
r=mid-;
}
else l=mid+;
}
printf("%lld %lld",ans,ans2);
return ;
}

[POI2012]STU-Well(二分答案+神仙操作)的更多相关文章

  1. BZOJ_2792_[Poi2012]Well_二分答案

    BZOJ_2792_[Poi2012]Well_二分答案 Description 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某 ...

  2. BZOJ 2792 Poi2012 Well 二分答案

    题目大意:给定一个非负整数序列A.每次操作能够选择一个数然后减掉1,要求进行不超过m次操作使得存在一个Ak=0且max{Ai−Ai+1}最小,输出这个最小值以及此时最小的k 二分答案,然后验证的时候首 ...

  3. 洛谷P4344 脑洞治疗仪 [SHOI2015] 线段树+二分答案/分块

    !!!一道巨恶心的数据结构题,做完当场爆炸:) 首先,如果你用位运算的时候不小心<<打成>>了,你就可以像我一样陷入疯狂的死循环改半个小时 然后,如果你改出来之后忘记把陷入死循 ...

  4. [校内模拟赛T3]火花灿灿_二分答案_组合数学_贪心

    火花灿灿 题目: 数据范围: 题解: 这个题真的是个神仙题. 我们对于每块石头维护一个$01$串. 这个$01$串的长度是操作次数. 如果$01$串的当前位是$1$,表示这次操作中当前石子被划分到了贡 ...

  5. noip推荐系列:遥控车[字符串+高精+二分答案]

    [问题描述] 平平带着韵韵来到了游乐园,看到了n辆漂亮的遥控车,每辆车上都有一个唯一的名字name[i].韵韵早就迫不及待地想玩名字是s的遥控车.可是韵韵毕竟还小,她想象的名字可能是一辆车名字的前缀( ...

  6. NOIP2012疫情控制(二分答案+倍增+贪心)

    Description H国有n个城市,这n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边境 ...

  7. [BZOJ1014] [JSOI2008] 火星人prefix (splay & 二分答案)

    Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 ...

  8. Rabbit的机器人-二分答案

    Rabbit的机器人 思路 : 可以 推知 挡板的位置与最后 一步的方向有关 .如果是 R 根据题目要求那么最终结果一定是在>0的位置, 因为按照题意要求的最终不能回到重复走过的位置.所以如果有 ...

  9. BZOJ1758[Wc2010]重建计划——分数规划+长链剖分+线段树+二分答案+树形DP

    题目描述 输入 第一行包含一个正整数N,表示X国的城市个数. 第二行包含两个正整数L和U,表示政策要求的第一期重建方案中修建道路数的上下限 接下来的N-1行描述重建小组的原有方案,每行三个正整数Ai, ...

随机推荐

  1. [转帖]SAP一句话入门:Plant Maintenance

    SAP一句话入门:Plant Maintenance http://blog.vsharing.com/MilesForce/A618273.html PM就是Plant Maintenance(本文 ...

  2. [转帖] SS, SP, BP 三个寄存器

    SS, SP, BP 三个寄存器 https://blog.csdn.net/vspiders/article/details/55669265 这么看 计算机组成原理 还有 考试的很多题目非常有用啊 ...

  3. pHP生成唯一单号

    这几天一直在写个人使用的用户中心,虽然期间遇到不少的问题,但还是一点点的都解决了,也从制作期间学到不少的知识,今天就说一说利用PHP生成订单单的方法. 订单号,大家都不陌生,无论从在网上购物,还是在线 ...

  4. 连接mysql 出现 1005 error(150) , error(121)的错误

    1.显示不能创建表 出现150错误 将检查是因为 我的user 表示拷贝过来的所以它设置的编码格式是utf-8 而我又新创建的表没有添加编码格式,所以它认为这两个关联的表之间的编码格式不匹配. 2.出 ...

  5. 关于js的书写

    <li> <label>工号:</label> <input id="uidarr" type='text' onclick=" ...

  6. 修改tomcat控制台title的方法

    修改tomcat控制台title的方法,参考:http://www.jspkongjian.net/news.jsp?id=1125,具体如图:

  7. java学习之—递归实现变位字

    /** * 递归实现变位字 * Create by Administrator * 2018/6/20 0020 * 上午 10:23 **/ public class AnagramApp { st ...

  8. Django restframework之Token验证的缺陷及jwt的简单使用

    一.主要缺陷: 1.Token验证是放在一张表中,即authtoken_token中,key没有失效时间,永久有效,一旦泄露,后果不可想象,安全性极差. 2.不利于分布式部署或多个系统使用一套验证,a ...

  9. python3高级编程

    1. SMTP发送邮件 internet相关协议: http:网页访问相关,httplib,urllib,xmlrpclib ftp:文件传输相关, ftplib, urllib nntp:新闻和帖子 ...

  10. 【建模应用】PCA主成分分析原理详解

    原文载于此:http://blog.csdn.net/zhongkelee/article/details/44064401 一.PCA简介 1. 相关背景 上完陈恩红老师的<机器学习与知识发现 ...