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) a b s ( v a l m a x − v a l A ) abs(valmax-valA)的代价把A和max变成这区间中的任意一个数,所以也就实现了维护
所以我们其实就相当于是把max变成了A,并付出了 abs(valmax−valA) a b s ( v a l m a x − v a l A ) abs(valmax-valA)的代价
这样之后我们又可以从当前的max开始维护
这样举个栗子:

新加入的点小于原来的A怎么办?雾
我们可以用 abs(valmax(C)−valH) a b s ( v a l m a x ( C ) − v a l H ) 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. java 建树源码_Java实现的二叉树常用操作【前序建树,前中后递归非递归遍历及层序遍历】...

    import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; //二叉树的建树,前中后 递归非递归遍历 层序 ...

  2. 三层神经网络前向后向传播示意图

    BP 神经网络信号前向后向传播示意图 主要参考博文 BP神经网络后向传播算法 本文主要分析下面的三层神经网络的信号传播,两个输入,两个隐层,一个输出 网络中每个紫色模块是一个神经元,它包括信号输入求和 ...

  3. HMM 前向 后向 Viterbi算法讲解通透的

    HMM  前向 后向 Viterbi算法讲解通透的 https://blog.csdn.net/xueyingxue001/article/details/52396494 什么是HMM https: ...

  4. 前松后紧和前紧后松——想起PM的点滴

    简单谈谈开发流程和管理中几个一般性的原则. 1.  前松后紧原则     做事情有时候真的要看好方向.方向错了,会严重影响项目进度和投入产出比,你努力工作的成果也许几乎无用,这也是很多项目失败的根本原 ...

  5. 转载:二叉树的前中后和层序遍历详细图解(递归和非递归写法)

    二叉树的前中后和层序遍历详细图解(递归和非递归写法) Monster_ii 2018-08-27 17:01:53 50530 收藏 403 分类专栏: 数据结构拾遗 文章标签: 二叉树 前序 中序 ...

  6. Kettle使用_20 笛卡尔积与前一行后一行Lead Lag

    Kettle使用_20 笛卡尔积与前一行后一行Lead Lag 需求:通过Kettle通过两种数据源(其中一个是随机数)实现120条记录并生成两列,分别对应每条记录的前一行和后一行. 解决方法:通过K ...

  7. LeetCode——树:层次遍历、前中后序遍历

    LeetCode--树:层次遍历.前中后序遍历 目录 层次遍历 二叉树的层平均值 找树左下角的值 前中后序遍历 概述 非递归实现二叉树的前序遍历 非递归实现二叉树的中序遍历 非递归实现二叉树的后序遍历 ...

  8. HMM前向算法,维比特算法,后向算法,前向后向算法代码

    typedef struct { int N; /* 隐藏状态数目;Q={1,2,-,N} */ int M; /* 观察符号数目; V={1,2,-,M}*/ double **A; /* 状态转移 ...

  9. HMM——前向后向算法

    1. 前言 解决HMM的第二个问题:学习问题, 已知观测序列,需要估计模型参数,使得在该模型下观测序列 P(观测序列 | 模型参数)最大,用的是极大似然估计方法估计参数. 根据已知观测序列和对应的状态 ...

最新文章

  1. Silverlight C# 游戏开发:Silverlight开发环境
  2. MATH6005 Final Assignment MATH6005 2018-19
  3. LINUX系统中进程如何管理控制(一)
  4. python爬虫入门教程-Python 爬虫介绍
  5. raspberrypi python传感器_Raspberry Pi和Arduino读取串行传感器d
  6. Python_微信开发
  7. 异常连接导致的内存泄漏排查
  8. 计算机网络暗地里范围,《计算机网络应用技术教程》期中试题.doc
  9. 机器学习实战笔记1——机器学习导论
  10. 三边测量定位算法C语言实现
  11. iOS 一行代码集成微信浮窗功能
  12. provision文件路径
  13. 中国水产科学研究院教授黄樟翰走进伊宅购集团考察伊家田园项目
  14. APS审核经验+审核资料汇总——计算机科学与技术专业上海德语审核
  15. python试卷三联学院_安徽三联学院期末考试英国文学完整版
  16. 转载海科SEO-探秘qq空间seo设置
  17. 将文本文件导入到mysql,hive数据库中
  18. Android Studio 微信界面开发——主页面框架
  19. 【Web入门项目源码分享】Java+Jsp
  20. 元宇宙Metaverse是什么?为什么这么火爆?

热门文章

  1. 【bzoj3308】九月的咖啡店 费用流
  2. 【报告分享】2021青年男女健康报告-腾讯新闻x冈本(附下载)
  3. lambda表达式——类名::实例方法
  4. 2021年个人年终工作总结
  5. 8.用神经网络破解验证码
  6. 三、DMSP/OLS夜间灯光数据校正一相互校正、饱和校正
  7. 贪心算法下的两大经典问题:最优装载问题、最小延迟调度问题
  8. SwiftUI——trailing closure syntax(尾随闭包)
  9. docker中文管理神器Portainer一键安装
  10. h5 播放.mp3 音频