BZOJ5059 前鬼后鬼的守护


Description

八云紫的式神八云蓝有一张符卡名为[式神-前鬼后鬼的守护],这张符卡的弹幕为BOSS从两侧向自机发射大玉,大玉后面跟着一些小玉,形成一个“V”字型的弹幕。然鹅兰大人觉得这个弹幕还能再美观一些,她想让自己的弹幕能从左向右发射,于是她就开始了行动。

[式神-前鬼后鬼的守护]由 N波弹幕组成,每波弹幕都有一个落到板底的位置,第i波弹幕的落地位置为Xi。

为了让弹幕能从左到右落地,蓝妈需要改变一些弹幕的落地位置,使得改变后的落地位置的坐标不递减,即



。然鹅改变弹幕的方向是很累的,蓝妈每将一波弹幕的坐标增加或减少1,就会花费一单位的能量,即



蓝妈想确定一个最终的修改方案使得他花费的能量最少,于是她将设计修改方案的任务交给了自己的式神八云橙。

这可急坏了我们的橙喵,她只是连曼哈顿距离都不会算的年幼式神,你能帮助她完成这个任务吗?

Input

输入文件第一行为一个正整数N ,意义如题目所示。接下来一行N个正整数,第i个整数代表Xi 。

N<=5*10^5,Xi<=10^9

Output

输出一个整数,为最小消耗的能量值。

Sample Input

7

1 3 2 4 5 3 9

Sample Output

3

将第二波弹幕的落地位置由3改为2 ,花费为1 ,将第六波由3 改为5 ,花费为2 ,总花费为1+2=3 ,形成了一个不下降序列:1,2,2,4,5,5,9为最优解(不一定为唯一最优解)


BZOJ上最短的代码就这样贴出来了

首先我们考虑已经维护好的一个区间



我们考虑新加入一个小于最大值的点(大于最大值直接加入)

就像这样

我们可以花费abs(valmax−valA)" role="presentation">abs(valmax−valA)abs(valmax−valA)的代价把A和max变成这区间中的任意一个数,所以也就实现了维护

所以我们其实就相当于是把max变成了A,并付出了abs(valmax−valA)" role="presentation">abs(valmax−valA)abs(valmax−valA)的代价

这样之后我们又可以从当前的max开始维护

这样举个栗子:



新加入的点小于原来的A怎么办?雾

我们可以用abs(valmax(C)−valH)" role="presentation">abs(valmax(C)−valH)abs(valmax(C)−valH)的代价把C和H变成这区间中的任意一个数,在这里我们可以直接将就上一次剩下的A,其实也不影响,所以C和H又相当于变成了两个H



可以证明一定是可以有一种方式使得单调不减

然后就写一段小小的代码

非常方便快捷


#include<bits/stdc++.h>
using namespace std;
priority_queue<int> q;
int n,x;
long long ans=0;
int main(){
scanf("%d",&n);
while(n--){
scanf("%d",&x);
q.push(x);
if(x<q.top()){
ans+=abs(q.top()-x);
q.pop();
q.push(x);
}
}
printf("%lld",ans);
}

BZOJ5059 前鬼后鬼的守护 【堆扩展】*的更多相关文章

  1. BZOJ 5059: 前鬼后鬼的守护 可并堆 左偏树 数学

    https://www.lydsy.com/JudgeOnline/problem.php?id=5059 题意:将原序列{ai}改为一个递增序列{ai1}并且使得abs(ai-ai1)的和最小. 如 ...

  2. [2016湖南长沙培训Day4][前鬼后鬼的守护 chen] (动态开点线段树+中位数 or 动规 or 贪心+堆优化)

    题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神 ...

  3. BZOJ 5059 前鬼后鬼的守护

    题解: 解法一:用函数斜率什么的,不会,留坑 解法二: 某一个序列都变成一个值那么中位数最优 加入一个元素,与前面那一段区间的中位数比较 x>=mid什么事也不做 x<mid合并两端区间 ...

  4. 探究C语言中的前++和后++

    小波带您探究c语言中的前++与后++: 欢迎吐槽,欢迎加QQ463431476. 欢迎关注!  现在来探究: 咱们先看第一个 i被赋值0,i++(后++)并没有输出1.   现在i被赋值0,++i,也 ...

  5. HMM 自学教程(七)前向后向算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  6. -XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息

    -XX:+PrintHeapAtGC每次一次GC后,都打印堆信息 {Heap before GC invocations=0 (full 0): def new generation   total ...

  7. STL——前闭后开区间表示法和function call 操作符

    前开后闭开区间表示法[) 任何一个STL算法,都需要获得由一对迭代器(泛型指针)所标示的区间,用以表示操作范围,这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示,也就是说,整 ...

  8. HMM 前向后向算法(转)

    最近研究NLP颇感兴趣,但由于比较懒,所以只好找来网上别人的比较好的博客,备份一下,也方便自己以后方便查找(其实,一般是不会再回过头来看的,嘿嘿 -_-!!) 代码自己重新写了一遍,所以就不把原文代码 ...

  9. 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

随机推荐

  1. 关于ckeditor 之 上传功能

    度了很多文章,看了很多关于ckeditor配置上传功能的文章,没一个写得清楚的, 就是简单的根目录下.config.js 增加 config.filebrowserUploadUrl="/a ...

  2. Quartz(自动任务)中的触发器Trigger

    1.Quartz中的触发器TriggerJob 包含了要执行任务的逻辑,但是 Job 对何时该执行却一无所知.这个事情留给了 Trigger.Quartz Trigger 继承了抽象的 org.qua ...

  3. 织梦dedecms获取当前内容页栏目id号的方法

    一,可在内容模板中直接这样写{dede:field.typeid/} 可显示本栏目的id 二,也可这样写 {dede:type}[field:ID /]{/dede:type}  . 三, 如果是在{ ...

  4. Shell date 命令详解

    格式: date [选项] ... [+格式] 选项说明: -d ,--date=字符串 显示指定字符串所描述的时间 格式说明: 例子1: #!/bin/bash ##. 获取当前系统时间 YYYY- ...

  5. bzoj1005: [HNOI2008]明明的烦恼 prufer序列

    https://www.lydsy.com/JudgeOnline/problem.php?id=1005 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的 ...

  6. Codeforces Round #378 (Div. 2)F - Drivers Dissatisfaction GNU

    http://codeforces.com/contest/733/problem/F 题意:给你一些城市和一些路,每条路有不满意程度和每减少一点不满意程度的花费,给出最大花费,要求找出花费小于s的最 ...

  7. UVA-11324 The Largest Clique (强连通+DP)

    题目大意:在一张无向图中,最大的节点集使得集合内任意两个节点都能到达对方. 题目分析:找出所有的强连通分量,将每一个分量视作大节点,则原图变成了一张DAG.将每个分量中的节点个数作为节点权值,题目便转 ...

  8. HDU 4681 STRING dp+暴力。

    题意:不说了很好懂. 这题这么水= =...当时竟然没有勇气暴力搜一下.昨天(好吧前天.)比赛的时候胃疼,看到这题想了一个办法就是对每一个出现最短的C串前后连接然后对这个串求最长公共子序列.其实优化一 ...

  9. 5G信令(就是用户身份信息)——手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。

    5G时代,跟IMSI-CATCHER SAY GOODBYE from:https://unicorn.360.com/blog/2018/04/18/GoodBye_5G_IMSI-Catcher/ ...

  10. OLT配置说明

    MA5680T>enable  进入特权模式   MA5680T#config  进入配置模式 MA5680T(config)#display current-configuration sim ...