当前位置: 首页 > article >正文

[蓝桥杯 2024 省 C] 回文数组

题目名字 [蓝桥杯 2024 省 C] 回文数组

题目链接

题意

给n个数字,用最少的次数,通过同时两个数字或单个数字加一或减一使给的这一串数字变成回文数

思路

  1. 字眼最少其实就需要判断出这个大概就是贪心了,不过很可惜比赛的时候就只想到了回文,想破了脑袋。。。
  2. 然后呢我们就需要用到回文的知识点啦,一般是取这串数字的一半来加减的,那么就可以用到一个数组来存储第i个和第n-+1个的差值,有可能会遇到产生负数的情况,所以需要用abs了
  3. 然后就是分情况讨论了,当第i个和第i+1个为正数的时候,就需要取两个数中小的那个数用b[i+1]数组给剪掉,因为sum在循环开始的时候已经加上了b[i]次了

坑点

  1. 不算坑点但是属于是完全有这个知识点,min和max的使用,是在Sstl库函数里面的,以及abs函数的使用
  2. x
  3. x

算法一:XX+XX

时间复杂度

$

实现步骤
  1. x
  2. x
  3. x
代码
 #include<iostream>
#include<algorithm> 
#include<math.h>
using namespace std;
const int N=1e5+10;
long long n,a[N],b[N];
int main(){
long long int sum=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i]; 
	}
	for(int i=1;i<=n;i++){
		b[i]=a[i]-a[n-i+1];
	} 
	for(int i=1;i<=n/2;i++){
		sum+=abs(b[i]);
		if(b[i]<0&&b[i+1]<0){
			b[i+1]-=max(b[i],b[i+1]);
		}
		if(b[i]>0&&b[i+1]>0){
			b[i+1]-=min(b[i],b[i+1]);
		}
	}
	cout<<sum;
	return 0;
}
 

http://www.kler.cn/news/364321.html

相关文章:

  • 修改滚动条样式
  • java-实例化一个List,然后添加数据的方法详解
  • 【分立元件】电阻的额定电压和最高电压
  • ctfshow-web入门-web31
  • 052_python基于Python高校岗位招聘和分析平台
  • 字符串使用方法:
  • Go语言开发环境搭建
  • 《a16z : 2024 年加密货币现状报告》解析
  • 云计算与SaaS赋能的工业软件服务新形态
  • 第五十一章 安全元素的详细信息 - EncryptedKey 详情
  • 2-解决联想拯救者Y7000p在ubuntu20.04未找到wifi适配器,安装rtl8852ce网卡驱动问题
  • django报错问题Error 0x800B0109(CERT_E_UNTRUSTEDROOT)(已解决)
  • 政府办公人员常见的办公软件技能
  • Python作业
  • JavaScript 中四种常见的数据类型判断方法
  • SSCI/SCI/EI/Scopus/期刊合集,周期短,快速发表,见刊快!
  • 微服务之网关、网关路由、网关登录校验
  • MySQL数据库—多表查询
  • 数码管显示屏驱动高亮LED驱动芯片VK16K33A数码管控制电路
  • 电脑程序变化监控怎么设置?实时监控电脑程序变化的五大方法,手把手教会你!
  • qt QMainWindow详解
  • 智象未来(HiDream.ai)携手Rokid,开启虚拟与现实交融新体验
  • fmql之Linux RTC
  • 关闭CPU C State 解决卡屏死机问题
  • 音视频:安防监控
  • SIP 业务举例之 Call Hold(呼叫保持)