C. Qpwoeirut And The City Codeforces Round #809 (Div. 2)

news2024/11/26 20:42:33

传送门

题意:有n栋楼,每栋楼的高度为a_i,对美丽的楼的定义如下:

对于2<=i<=n-1,如果a_i>a_i-_1并且,a_i>a_i+_1那么就说明这栋楼是美丽的。(所以第一栋楼和最后一栋一定不是美丽的)

lk现在可以将所有的楼的高度增加任意值,他想知道他能获得的最多的美丽的楼的前提下花费最小为多少。

思路:

首先对于2-n 的下标进行处理,如果将该栋楼变成美丽的就视为1,否则视为0.

预处理v数组算出将v_i栋楼变成美丽楼的代价,

n为奇数的话,因为只有一种可能的情况,就是1010101....,直接算出所有要变成的美丽楼的代价。

如果n为偶数:假设n为8的情况,去掉第一个和最后一个,我们可以直接求出所有的规律:

//101010
//101001
//100101
//010101

那么我们可以发现,对于后面是10 的,那么前面一定不能变成01,那么对于有01的情况,一定是从末尾开始变,一直变到第一个。

那么可以直接先计算出全部为10的结果,然后每次将后面的10转换成01然后取最小值,最后的结果就是我们的答案。

/**
*  ┏┓   ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃       ┃
* ┃   ━   ┃ ++ + + +
*  ████━████+
*  ◥██◤ ◥██◤ +
* ┃   ┻   ┃
* ┃       ┃ + +
* ┗━┓   ┏━┛
*   ┃   ┃ + + + +Code is far away from  
*   ┃   ┃ + bug with the animal protecting
*   ┃    ┗━━━┓ 神兽保佑,代码无bug 
*   ┃  	    ┣┓
*    ┃        ┏┛
*     ┗┓┓┏━┳┓┏┛ + + + +
*    ┃┫┫ ┃┫┫
*    ┗┻┛ ┗┻┛+ + + +
*/

#include<cstdio>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include<vector>
#include<queue>
#include<map>
#define sc_int(x) scanf("%d", &x)
#define sc_ll(x) scanf("%lld", &x)
#define pr_ll(x) printf("%lld", x)
#define pr_ll_n(x) printf("%lld\n", x)
#define pr_int_n(x) printf("%d\n", x)
#define ll long long 
using namespace std;

const int N=100100+100;
const ll INF=1e18;
int n ,m,h;
ll s[N];
ll v[N];


int main()
{
	int t;
	sc_int(t);
	while(t--)
	{
		sc_int(n);	
		memset(v,0,sizeof v);
		for(int i =1;i<=n;i++)
		sc_ll(s[i]);
		if(n%2!=0){
			ll res=0;
			for(int i=2;i<=n;i+=2)
			if(s[i]<=max(s[i-1],s[i+1]))res+=max(s[i-1],s[i+1])-s[i]+1;
		pr_ll_n(res);
		}
		else{
			ll res=INF,sum=0;
			for(int i =2;i<n;i++){
			if(s[i]<=max(s[i-1],s[i+1]))v[i]=max(s[i-1],s[i+1])-s[i]+1;
			if(i%2==0)sum+=v[i];
			}
			// for(int i =2;i<n;i++)
			// cout<<v[i]<<" ";
			// cout<<endl;
			res=min(res,sum);//12 1000000000 1 1 1000000000 999800701 2 600700800 900000000 500600700 1 500700900 1000000000
			for(int i =n-1;i>2;i-=2) // 1     2 3 4 5     6
			{
				sum-=v[i-1];
				sum+=v[i];
				res=min(res,sum);
			}
			pr_ll_n(res);
		}	
	}
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

量化研究丨波动与盈利关系研究系列(一)

ˇ 量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 今天我们讨论个议题&#xff0c;一是波动与盈利关系&#xff0c;文章非常长&#xff0c;涉及图片与文字结合内容阐述&#xff0c;会员朋友可以通过邮箱群发word文档进行清晰阅读。&#xff08;文章设…

外卖点餐自取连锁多店小程序开发

外卖点餐自取连锁多店小程序开发 功能// 外卖&自取&#xff1a;支持商家自送外卖和用户自取购买模式&#xff0c;暂不支持接入美团/饿了么。 会员签到&#xff1a;支持签到获取积分功能&#xff0c;积分可用于积分商城兑换商品或兑换优患券。 积分商城&#xff1a;后台添加…

week 6 贪心

P1223 排队接水 排队接水 题目描述 有 nnn 个人在一个水龙头前排队接水&#xff0c;假如每个人接水的时间为 TiT_iTi​&#xff0c;请编程找出这 nnn 个人排队的一种顺序&#xff0c;使得 nnn 个人的平均等待时间最小。 输入格式 第一行为一个整数 nnn。 第二行 nnn 个整…

【JavaScript 逆向】极验三代滑块验证码逆向分析

声明 本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 案例目标 极验验证码 demo&#xff1a;aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby8 滑动验证码&#xff1a;aHR0cHM6Ly93d3cuZ2VldGVzdC5j…

Mysql相关的各种类型文件

Mysql相关的各种类型文件文件大汇总Mysql数据库自身文件参数文件日志文件错误日志慢查询日志常用参数设置慢查询日志文件慢查询表更换引擎通用日志二进制日志套接字文件pid文件表结构定义文件Innodb存储引擎的文件表空间文件redo日志文件大汇总 Mysql和Innodb启动和运行过程中…

[附源码]计算机毕业设计springboot市场摊位管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

蓝桥杯嵌入式AD采样解析

文章目录前言一、什么是AD采样二、原理图查看及cubeMX配置三、代码解析总结前言 本文将带大家学习AD采样。 一、什么是AD采样 原理部分这里就不多介绍了&#xff0c;给大家推荐一篇文章大家自己去了解一下即可。 AD采样 二、原理图查看及cubeMX配置 在板子上面有两个可调电…

野火FPGA系列教学视频---多路选择器

大体思路是&#xff1a;有两路输入信号&#xff0c;一个选通信号&#xff0c;当选通信号高电平时&#xff0c;按输入1的波形&#xff0c;当选通信号为低电平时&#xff0c;按输入2的波形。 大致波形图如下图&#xff1a; rtl代码如下&#xff1a; module mux2_1 (input wir…

企业应如何选择合适的电子采购软件?

现如今是供应链竞争占据主导地位的互联网时代&#xff0c;如果使用一款高效的电子采购软件&#xff0c;不仅能为企业带来采购时的便捷&#xff0c;还成就了企业整个采购供应链的高速流畅运转&#xff0c;促进买卖双方的良性合作。 现在的市场中电子采购软件有很多&#xff0c;…

【目标检测】Faster R-CNN 论文复现代码(含源代码)

Faster R-CNN 论文复现代码 详细的代码使用守则&#xff1a; https://github.com/biluko/Faster-RCNN-Pytorch博客地址为&#xff1a; https://blog.csdn.net/wzk4869/article/details/128133224?spm1001.2014.3001.5501一、nets文件夹下 init.py classifier.py import w…

算法刷题——二叉树部分操作(翻转二叉树,平衡二叉树,最大深度)

翻转二叉树 package 二叉树.反转二叉树;import 二叉树.TreeNode;import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue;public class Solution {public static void main(String[] args) {TreeNode rootnew TreeNode(1);T…

【Javadoc生成开发文档(Terminal或IDEA中)】

Javadoc生成开发文档一、Javadoc工具介绍二、常用标记三、使用方式四、生成文档的两种方式1.Terminal方式2.IDE方式一、Javadoc工具介绍 大家在查看官网文档的时候&#xff0c;会不会感慨人家的帮助文档写的真有逻辑&#xff0c;层次分明&#xff1f; 不要羡慕&#xff0c;你…

最便宜的唯品会

你买的真的划算吗&#xff1f;这里可以看到什么时候最划算 作为一个每个月在vip上买买买花费几万的资深vip用户&#xff0c;我想给你说的是&#xff0c;VIP上的东西是真的。除了平时的衣服鞋子&#xff0c;再到家里的微波炉、电磁炉、热水壶等小家电&#xff0c;我都是从给vip…

抓包工具简单介绍和 fiddler 安装

目录 1、 抓包工具介绍 2、原理 3、fiddler 安装 1、 抓包工具介绍 抓包工具&#xff0c;是个特殊的软件&#xff0c;相当于一个 “代理程序”&#xff0c;浏览器给服务器发的请求就会经过这个代理程序&#xff0c;进一步的就能分析出请求和响应的结果如何。 通俗的讲&…

我们真的需要把训练集的损失降到零吗?

在训练模型的时候&#xff0c;我们需要将损失函数一直训练到0吗&#xff1f;显然不用。一般来说&#xff0c;我们是用训练集来训练模型&#xff0c;但希望的是验证机的损失越小越好&#xff0c;而正常来说训练集的损失降到一定值后&#xff0c;验证集的损失就会开始上升&#x…

手摸手教你 docker+jenkins+gitlab 部署你的前端项目

学习了一周的CICD,踩了很多坑,都是泪,特此记录一下整个过程,本次项目产出效果是,git push的时候自动化直接部署到服务器上,以下是整个大致流程: 本地代码push到gitlab gitlab通过webhook通知到jenkins jenkins拉取gitlab仓库代码,并执行shell脚本 shell脚本执行docker命令,打…

python数据分析——NumPy基础

目录 一、创建数组的方法 二、array的属性 三、创建特殊的数组 四、数组的变换 4.1、数组重塑 4.2、数组合并 4.3、数组分割 4.4、数组转置和轴对换 五、数组的索引和切片 5.1、一维数组的索引 5.2、多维数组的索引 5.3、多维数组的访问 六、数组的运算 6.1、数组…

Apollo 应用与源码分析:guardian 紧急处置

目录 概念 代码 分析 概念 Guardian模块的主要作用是监控自动驾驶系统状态&#xff0c;当出现模块为失败状态的时候&#xff0c;会主动切断控制命令输出&#xff0c;并且刹车。 有点像是保险丝&#xff0c;有一个fallback机制。 guardian模块的触发条件主要有2个。 上报…

虚拟机的快照与克隆

简单回顾以下快照 快照的拍摄&#xff1a; 记录虚拟机当前的状态 拍摄快照时&#xff0c;系统一定要处于关机状态 转到&#xff1a; 回到某一个历史快照节点 克隆 复制某一个历史快的的节点 克隆的方式 链接克隆&#xff1a; 当前节点文件家只存储差异性数据 相同数据放在原…

RabbitMQ之延迟队列

延迟消息是指的消息发送出去后并不想立即就被消费&#xff0c;而是需要等&#xff08;指定的&#xff09;一段时间后才触发消费。 例如下面的业务场景&#xff1a;在支付宝上面买电影票&#xff0c;锁定了一个座位后系统默认会帮你保留15分钟时间&#xff0c;如果15分钟后还没付…