构造回文数组

目录

原题描述:

题目描述

时间:1s 空间:256M

题目描述:

输入格式:

输出格式:

样例1输入:

样例1输出:

样例2输入:

样例2输出:

约定:

作者hack数据:

输入:

输出:

主要思路:

求答案:

代码code:


原题描述:

时间限制: 1000ms

空间限制: 262144kB

题目描述

时间:1s 空间:256M

题目描述:

小信有一个长度为 n 的数组 a,他想把这个数组变成回文数组。

他可以操作若干次,每次操作,选择一个区间[L,R],把a_L,a_{L+1},...a_R​ 都加 1

小信想知道最少需要操作多少次,才能把这个数组变成回文数组。

输入格式:

第一行包含一个整数 n

第二行包含长度为 n 的数组 a_1,a_2,...a_n​ 。

输出格式:

输出一个整数表示答案。

样例1输入:

6
2 6 4 3 4 1

样例1输出:

2

样例2输入:

3
1 10 1

样例2输出:

0

约定:

对于100%的数据,1\le n\le 3 \cdot 10^5,1 \le a_i \le 10^9

对于样例1:选择 [3,6]和 [4,5],数组变成 [2,6,5,5,6,2]

作者hack数据:


输入:
 

100
295117793 852883521 36092583 681745569 23541647 32480206 769047426 128111255 850655575 8867194 368297902 613812293 347992953 134986353 863972512 970426966 785192811 540559474 988288563 456754809 154127192 76979571 460304832 733713409 70970660 635551742 769915887 7641407 660822912 748447793 598826955 609365172 822558626 849292246 849242098 941529514 216622499 647819205 34288562 360796801 564768544 688079849 702507270 777507089 776688905 515137821 52246637 307838702 453802754 136279521 618645584 803000735 877721915 194107657 136422627 187654402 227004447 519370751 457822037 804058036 911179942 457248799 305969878 787934175 14313040 9582663 34547015 870503865 216036366 15134170 174645568 77155278 213349935 622731147 84032183 14391789 46136215 862980910 139514947 73594405 599740219 178453695 493364413 239940662 981248295 136272953 532638230 679826619 820419790 652179351 81724392 185039813 238018126 660954049 903887251 617400394 816543430 957422974 272333302 464554507

输出:

12198773018

主要思路:

这个是个贪心题目,看了我的hack数据,我们也要知道,这题要开:long long!!!

我们可以这样想,因为只加不减,所以可以从原数组中,相对的两个(a[i]相对a[n-i+1])

如果a[i]大,那么a[i]就不需要被加,sum[i] = 0,a[n-i+1]就要被加a[i]-a[n-i+1]次,sum[n-i+1] = a[i]-a[n-i+1] 

反之亦然。

sum[i]就代表了这个数字要加几次才可以和他相对的数字相等。

求答案:

上面的这些话是初始化,现在我们要求答案,我们可以找一找规律。

用样例1来说。

sum数组={0,0,0,1,2,1}

我们不看0。

看后边的1,2,1。

如何可以发现规律?

如果只有1,那么最少操作一次。

如果只有1,2,那么最少操作两次。

如果只有1,2,1还是操作两次。

有些同学会很快发现规律:最少操作数就是sum连续一段区间的最大值。

那么我告诉你:恭喜你,猜错了。

sum反例:1,2,1,3。

这个时候,答案应该是4,而按上面的方式,答案是3。

所以正确结论是:

如果sum[i]>sum[i-1],那么ans+=sum[i]-sum[i-1]

如果sum[i]<sum[i-1],那么答案不变。

代码code:

理解上面的话后,就好写了。

#include<bits/stdc++.h>
using namespace std;
int n;
int a[300010];
int sum[300010];
int main()
{
	cin>>n;
    //输入
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
//	int ret=0;
    //初始化
	for(int i=1,j=n;i<=n,j>=1;i++,j--)
	{
		if(a[i]>=a[j])
		{
			sum[i] = 0;
			sum[j] = a[i]-a[j];
		}
		else 
		{
			sum[i] = a[j]-a[i];
			sum[j] = 0;
		}
//		cout<<sum[i];
	}
    //算答案
	long long ret=0;
	for(int i=1;i<=n;i++)
	{
		if(sum[i]>=sum[i-1])
		{
			ret+=sum[i]-sum[i-1];
		}
	}
	cout<<ret;
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM 性能调优 - JVM 参数基础(2)

查看 JDK 版本 $ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 查看 Java 帮助文档 $ java -help 用法: java [-options] class [args...] …

CSS:三列布局

三列布局是指左右两列定宽&#xff0c;中间自适应。最终效果如下&#xff1a; HTML&#xff1a; <div class"container"><div class"left"></div><div class"center"></div><div class"right">…

javaEE - 23( 21000 字 Servlet 入门 -1 )

一&#xff1a;Servlet 1.1 Servlet 是什么 Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app. 构建动态页面的技术有很多, 每种语言都有一些相关的库/框架来做这件事&#xff0c;Servlet 就是 Tomcat 这个 HTTP…

404. Sum of Left Leaves(左叶子之和)

问题描述 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 问题分析 我们可以查看如果一个叶子是左叶子就加上其值然后返回&#xff0c;如果是右叶子则不用关。 代码 int sumOfLeftLeaves(struct TreeNode* root) {int sum 0;if(root!NULL){if(root->left!…

板块零 IDEA编译器基础:第二节 创建JAVA WEB项目与IDEA基本设置 来自【汤米尼克的JAVAEE全套教程专栏】

板块零 IDEA编译器基础&#xff1a;第二节 创建JAVA WEB项目与IDEA基本设置 一、创建JAVA WEB项目&#xff08;1&#xff09;普通项目升级成WEB项目&#xff08;2&#xff09;创建JAVA包 二、IDEA 开荒基本设置&#xff08;1&#xff09;设置字体字号自动缩放 &#xff08;2&am…

安全SCDN有什么作用

当前网络安全形势日益严峻&#xff0c;网络攻击事件频发&#xff0c;攻击手段不断升级&#xff0c;给企业和个人带来了严重的安全威胁。在这种背景下&#xff0c;安全SCDN作为一种网络安全解决方案&#xff0c;受到了广泛的关注。那么&#xff0c;安全SCDN真的可以应对网络攻击…

为后端做准备

这里写目录标题 flask 文件上传与接收flask应答&#xff08;接收请求&#xff08;文件、数据&#xff09;flask请求&#xff08;上传文件&#xff09;传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …

基于OpenCV灰度图像转GCode的斜向扫描实现

基于OpenCV灰度图像转GCode的斜向扫描实现基于OpenCV灰度图像转GCode的斜向扫描实现 引言激光雕刻简介OpenCV简介实现步骤 1.导入必要的库2. 读取灰度图像3. 图像预处理4. 生成GCode5. 保存生成的GCode6. 灰度图像斜向扫描代码示例 总结 系列文章 ⭐深入理解G0和G1指令&…

003集—三调数据库添加三大类字段——arcgis

在国土管理日常统计工作中经常需要用到三大类数据&#xff08;农用地、建设用地、未利用地&#xff09;&#xff0c;而三调数据库中无三大类字段&#xff0c;因此需要手工录入三大类字段&#xff0c;并根据二级地类代码录入相关三大类名称。本代码可一键录入海量三大类名称统计…

Springboot+vue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的企业财务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业财务管理系统&#xff0c;采用M&#xff08;model&…

想提升测试效率?Ant来帮你

Ant的安装和配置 Apache Ant,是一款将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发 设置ant环境变量: a) ant包名称为:apache-ant-1.9.6-bin.zip b) 解压到一个目录下面:unzip apache-ant-1.9.6-bin.zip c) 比如放到:/op…

Netty核心原理与基础实战(二)——详解Bootstrap

接上篇&#xff1a;Netty核心原理与基础实战&#xff08;一&#xff09; 1 Bootstrap基础概念 Bootstrap类是Netty提供的一个便利的工厂类&#xff0c;可以通过它来完成Netty的客户端或服务端的Netty组件的组装&#xff0c;以及Netty程序的初始化和启动执行。Netty的官方解释是…

Google MobileDiffusion: 移动端设备上的快速文字到图片生成技术

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

腌腊食品污废水处理需要哪些工艺设备

腌腊食品行业在加工过程中产生的污废水处理是一个关键的环境保护问题。为了确保生产过程中的环境友好和可持续性发展&#xff0c;腌腊食品污废水处理需要采用一系列的工艺设备。下面将介绍一些常用的工艺设备&#xff0c;以供参考。 首先&#xff0c;腌腊食品污废水处理中常用的…

缩略图保持加密(TPE)论文

文献: R.Zhao,Y.Zhang,Y.Nan,W.Wen,X.Chai,andR. Lan, “Primitively visually meaningful image encryption: A new paradigm,” Inf. Sci. (Ny), Vol. 613, pp. 628–48, 2022. DOI: 10.1016/j.ins.2022.08.027. (1) 第1行:原始图像 第2行:加密图像 加密的目标: 原始…

如何使用 Bard 中的画图功能

Bard 是 Google AI 推出的大型语言模型&#xff0c;它不仅可以生成文本、翻译语言&#xff0c;还可以根据您的描述生成图像。这篇文章将介绍如何使用 Bard 中的画图功能。 步骤 1&#xff1a;打开 Bard 首先&#xff0c;您需要打开 Bard。您可以访问 bard.google.com: https:…

【保姆级教程|YOLOv8改进】【5】精度与速度双提升,使用FasterNet替换主干网络

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

jquery生成多个滑块,并对每个滑块做处理

基础滑块可以参考上一篇 eval(newThree).map((item, index) > { <div id"${uniqueId}" data-value"${item.text}" class"slider2"></div>$(document).ready(function () {for (let i 0; i < sliders.length; i)…

服务器和CDN推荐

简介 陆云Roovps是一家成立于2021年的主机服务商&#xff0c;主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器&#xff0c;还有相关CDN产品。&#xff08; 地址&#xff1a;roovps&#xff09; 一、相关产品

C++多线程:this_thread 命名空间

std::this_thread 是 C 标准库中提供的一个命名空间&#xff0c;它包含了与当前线程相关的功能。这个命名空间提供了许多与线程操作相关的工具&#xff0c;使得在多线程环境中更容易进行编程。 源码类似于如下&#xff1a; namespace std{namespace this_thread{//...........…