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

蓝桥杯2024年第十五届省赛真题-回文数组

题目描述
小蓝在无聊时随机生成了一个长度为 n 的整数数组,数组中的第 i 个数为ai,他觉得随机生成的数组不太美观,想把它变成回文数组,也是就对于任意i ∈ [1, n] 满足 ai = an−i+1 。小蓝一次操作可以指定相邻的两个数,将它们一起加1 或减 1 ;也可以只指定一个数加 1 或减 1 ,请问他最少需要操作多少次能把这个数组变成回文数组?
输入格式
输入的第一行包含一个正整数 n 。

第二行包含 n 个整数 a1, a2, · · · , an ,相邻整数之间使用一个空格分隔。

输出格式
输出一行包含一个整数表示答案。
样例输入复制
4
1 2 3 4
样例输出复制
3
提示
【样例说明】

第一次操作将 a1, a2 加 1 ,变为 2, 3, 3, 4 ;后面两次操作将 a1 加 1 ,变为 4, 3, 3, 4 。

【评测用例规模与约定】

对于 20% 的评测用例,1 ≤ n ≤ 10;对于所有评测用例,1 ≤ n ≤ 105 ,−106 ≤ ai ≤ 106 。

1.分析

        1.用long long 

        2.计算 ai 和 an−i+1 的差值,如果相邻 ai 和 ai+1 两个都为正数或负数,就一起加减。然后计算孤立的点 ai

2.代码

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long LL;
const int MAX = 1e5 + 100;

LL h[MAX],n,num[MAX],re;

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {        //输入
        cin >> h[i];
    }
    for (int i = 1; i <= n / 2; i++) {   //计算差值
        num[i] = h[n - i + 1] - h[i];
    }
    for (int i = 1; i < n / 2; i++) {
        if (num[i] >= 0 && num[i + 1] >= 0) {    //都为正数
            int t = min(num[i], num[i + 1]);
            num[i] -= t;
            num[i + 1] -= t;
            re += t;
        }
        else if (num[i] < 0 && num[i + 1] < 0) {       //都为负数
            int t = min(abs(num[i]), abs(num[i + 1]));
            num[i] += t;
            num[i + 1] += t;
            re += t;
        }
        if (num[i] > 0) re += num[i];         //计算ai 
        else re -= num[i];
        num[i] = 0;
    }
    if (num[n / 2] > 0) re += num[n / 2];        //中点
    else re -= num[n / 2];

    cout << re << endl;
    return 0;
}


http://www.kler.cn/a/586250.html

相关文章:

  • OpenCV中文路径图片读写终极指南(Python实现)
  • 光伏储能:未来能源的黄金搭档
  • 【品铂科技】在高精度定位行业内的口碑怎么样?
  • 【说下线程本地变量ThreadLocal及其用法】
  • 游戏引擎学习第151天
  • ShadowCracker智能口令破解工具架构
  • 【工具】C#游戏防沉迷小工具
  • 17 | 实现简洁架构的 Biz 层
  • 【无标题】ffmpeg 合并文件夹下所有视频
  • 【从零开始学习计算机科学】数据库系统(三)关系数据库设计
  • Java vs Go:SaaS 系统架构选型解析与最佳实践
  • c#使用redis如何实现数据的分库存储
  • 【含文档+PPT+源码】基于Python的美食数据的设计与实现
  • Bash和Zsh在处理大文件时优化方法
  • 【SpringMVC】常用注解:@RequestBody
  • 前端流式输出实现详解:从原理到实践
  • apt/yum/dnf/dkg命令详细:软件安装
  • 【自动化】Automa网页自动化之路
  • 晨控CK-FR08与汇川H5U系列PLC配置EtherNet/IP通讯连接手册
  • 基于jspm校园安全管理系统(源码+lw+部署文档+讲解),源码可白嫖!