题目

二分好题

首先用二分找最小的绝对值差,对于每个a[i]都两个方向扫一遍,先都改成差满足的形式,然后再找a[k]等于0的情况,发现如果a[k]要变成0,则从他到左右两个方向上必会有两个连续的区间也随之变化,

然后我们有一点K, 使K点=0时,可以分别向左和右影响区间的值。并且影响之后的值一定互为以0为首项,绝对值差为公差的等差数列。

如在在一段范围内K点影响到的值,以后的点一定不会受到影响,然后修改的次数就是该范围的面积,可以用该区间的值的和减去影响影响范围的等差数列。最后用双指针法求出每个K的左右区间端点,枚举第一个符合条件的最小K即可求出答案

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define N 1001011
#define int long long
using namespace std;
int n, m, li, ri, ans, k, nk;
int data[N], a[N], def[N], sum[N], lef[N], rig[N];
bool check(int t)
{
int now = 0;
for (int i = 1; i <= n; i++)
a[i] = data[i];//a[i]是临时数组
for (int i = 2; i <= n; i++)
if (a[i] - a[i - 1] > t)//使a[i]减小一次,使a[i]满足条件,前后都扫一遍。
now += a[i] - a[i - 1] - t, a[i] = a[i - 1] + t;
if (now > m) return false;
for (int i = n - 1; i >= 1; i--)
if (a[i] - a[i + 1] > t)
now += a[i] - a[i + 1] - t, a[i] = a[i + 1] + t;
if (now > m) return false;
for (int i = 1; i <= n; i++)
sum[i] = sum[i - 1] + a[i];
int l = 1;
for (int r = 1; r <= n; r++)
{//找到左边最后一个受等差数列影响的
while (l < r && a[l] <= (r - l) * t) l++;//找左边最近的可以满足条件的位置,lef,rig存放的都是位置
lef[r] = l;
}
int r = n;
for (int l = n; l >= 1; l--)
{
while (r > l && a[r] <= (r - l) * t) r--;
rig[l] = r;
}
// for (int i = 1; i <= n; i++)
// printf("%lld %lld %lld\n", sum[i], lef[i], rig[i]);
for (int i = 1; i <= n; i++)
if ( (now+sum[rig[i]]-sum[lef[i]-1]-t*((i-lef[i])*(i-lef[i]+1)+(rig[i]-i)*(rig[i]-i+1))/2) <= m)//等差数列求和 + 原先的now <= m, 说明此时是最小的k
{nk = i;return true;}
return false;
}
signed main()
{
scanf("%lld%lld", &n, &m);
for (int i = 1; i <= n; i++)
scanf("%lld", &data[i]);
int mid = 0;
li = 0;
ri = 1e9;
while (li <= ri)
{
int mid = (li + ri) >> 1;
if (check(mid))
{
ans = mid;
ri = mid - 1;
}
else li = mid + 1;
}
printf("%lld %lld", nk, ans);
}
/*
16 7
8 7 6 5 5 5 3 5 5 6 6 7 7 9 7 5 5
*/

洛谷P3534 [POI2012] STU的更多相关文章

  1. 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告

    P3539 [POI2012]ROZ-Fibonacci Representation 题意:给一个数,问最少可以用几个斐波那契数加加减减凑出来 多组数据10 数据范围1e17 第一次瞬间yy出做法, ...

  2. 洛谷P3533 [POI2012]RAN-Rendezvous

    P3533 [POI2012]RAN-Rendezvous 题目描述 Byteasar is a ranger who works in the Arrow Cave - a famous rende ...

  3. BZOJ2801/洛谷P3544 [POI2012]BEZ-Minimalist Security(题目性质发掘+图的遍历+解不等式组)

    题面戳这 化下题面给的式子: \(z_u+z_v=p_u+p_v-b_{u,v}\) 发现\(p_u+p_v-b_{u,v}\)是确定的,所以只要确定了一个点\(i\)的权值\(x_i\),和它在同一 ...

  4. 洛谷P3538 [POI2012]OKR-A Horrible Poem [字符串hash]

    题目传送门 A Horrible Poem 题目描述 Bytie boy has to learn a fragment of a certain poem by heart. The poem, f ...

  5. 洛谷P3539 [POI2012] ROZ-Fibonacci Representation

    题目传送门 转载自:five20,转载请注明出处 本来看到这题,蒟蒻是真心没有把握的,还是five20大佬巨orz 首先由于斐波拉契数的前两项是1,1 ,所以易得对于任何整数必能写成多个斐波拉契数加减 ...

  6. 洛谷P3537 [POI2012]SZA-Cloakroom(背包)

    传送门 蠢了……还以为背包只能用来维护方案数呢……没想到背包这么神奇…… 我们用$dp[i]$表示当$c$的和为$i$时,所有的方案中使得最小的$b$最大时最小的$b$是多少 然后把所有的点按照$a$ ...

  7. 洛谷P3531 [POI2012]LIT-Letters

    题目描述 Little Johnny has a very long surname. Yet he is not the only such person in his milieu. As it ...

  8. 【洛谷3546_BZOJ2803】[POI2012]PRE-Prefixuffix(String Hash)

    Problem: 洛谷3546 Analysis: I gave up and saw other's solution when I had nearly thought of the method ...

  9. 洛谷 P1193 洛谷团队训练VS传统团队训练

    P1193 洛谷团队训练VS传统团队训练 题目背景 “在中学的信息学教育领域,洛谷无疑是一个相当受欢迎的辅助网站.同时有百余所学校正在通过洛谷进行信息学竞赛(以后简称OI)的教育.洛谷之所以如此受欢迎 ...

随机推荐

  1. C# -- 高性能RPC框架:Socean.RPC

    简介 Socean.RPC是一个.Net下的高性能RPC框架,框架以高性能.高稳定性为目标,底层基于socket,无第三方库引用,代码简洁,总代码量大约在2000行,框架性能较高,在普通PC上测试,长 ...

  2. MVC Filter的使用方法

    相信对权限过滤大家伙都不陌生 用户要访问一个页面时 先对其权限进行判断并进行相应的处理动作 在webform中 最直接也是最原始的办法就是 在page_load事件中所有代码之前 先执行一个权限判断的 ...

  3. spring中bean的作用域属性singleton与prototype的区别

    1.singleton 当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会 ...

  4. 【转载】C#中使用float.TryParse方法将字符串转换为Float类型

    在C#编程过程中,将字符串string转换为单精度float类型过程中,时常使用float.Parse方法,但float.Parse在无法转换的时候,会抛出程序异常,其实还有个float.TryPar ...

  5. 类选择器与ID选择器的比较

    如果已经在元素中标识了class或id,就可以在选择器中使用这个标准,从而只对已标识的元素进行格式化.不过推荐使用类选择器,一会儿我会解释理由. 要在class选择器和id选择器之间作出选择的时候,建 ...

  6. PHP使用Redis的Pub/Sub(发布订阅)命令

    1.概念 名称 含义 channel 频道:生产者和消费者直接操作的对象 publish 生产者:向channel发送消息 subscribe 消费者:订阅一个或多个channel psubscrib ...

  7. 【OGG】OGG的单向复制配置-支持DDL(二)

    [OGG]OGG的单向复制配置-支持DDL(二) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...

  8. Kubectl Rollout 回滚及Autoscale自动扩容

    Kubectl Rollout 回滚及Autoscale自动扩容 Kubernetes 中采用ReplicaSet(简称RS)来管理Pod.如果当前集群中的Pod实例数少于目标值,RS 会拉起新的Po ...

  9. 【Spring Boot】Spring Boot之统一异常处理

    一.统一异常处理的作用 在web应用中,请求处理时,出现异常是非常常见的.所以当应用出现各类异常时,进行异常的统一捕获或者二次处理(比如空指针异常或sql异常正常是不能外抛)是非常必要的,然后右统一异 ...

  10. HTML&CSS基础-html的图片标签

    HTML&CSS基础-html的图片标签 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如下图所示,准备一张图片,存放路径和html文件在同一目录 二.HTML源代码 ...