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

题目 3316: 蓝桥杯2025年第十六届省赛真题-数组翻转

题目 3316: 蓝桥杯2025年第十六届省赛真题-数组翻转
时间限制: 3s 内存限制: 512MB 提交: 101 解决: 24
题目描述
小明生成了一个长度为 n 的正整数数组 a1, a2, . . . , an,他可以选择连续的一 段数 al , al+1, ..., ar,如果其中所有数都相等即 al = al+1 = ... = ar,那么他可以获 得 (r − l + 1) × al 的分数。 

在选择之前,为了让分数尽可能大,他决定先选择数组中的一段区间,对 其进行左右翻转。他想知道在对数组进行翻转之后他能获得的最大分数是多少? 

提示:当翻转 al 到 ar 这段区间后,整个数组会变为 a1, a2, . . . , al−1, ar , ar−1, . . . , al+1, al , ar+1, . . . , an

输入格式
输入共两行。

第一行为一个正整数 n。

第二行为 n 个由空格分开的正整数 a1, a2, . . . , an。

输出格式
输出共 1 行,一个整数表示答案。

样例输入复制
7
4 4 3 3 2 1 3
样例输出复制
9
提示
【样例说明】 

翻转区间 [5, 7],数组变为 4, 4, 3, 3, 3, 1, 2,最大分数为选择三个 3。 

【评测用例规模与约定】 

对于 20% 的评测用例,n ≤ 500。 

对于 100% 的评测用例,n ≤ 106,ai ≤ 106。

1.分析

        记录连续出现相同数字的个数的前两最大值。因为可以通过反转把这两个链接起来。

        最后统计计算最大值。

2.代码

        

#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
const int MAX = 1e6+10;
typedef long long LL;
int n, a[MAX],re;
int b[MAX][2];
set<int> m;
int main() {cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];}a[n] = -1;int t=a[0], s=0;m.insert(a[0]);for (int i = 1; i <= n; i++) {if (a[i] != t) {int num = i - s;if (num > b[t][0]) b[t][0] = num;else if (num > b[t][1]) b[t][1] = num;t = a[i];s = i;m.insert(t);}}for (auto it : m) {int sum = it * (b[it][0] + b[it][1]);re = max(re, sum);}cout << re << endl;return 0;
}

http://www.lryc.cn/news/2392804.html

相关文章:

  • mongodb源码分析session接受客户端find命令过程
  • Netty 实战篇:为自研 RPC 框架加入异步调用与 Future 支持
  • python37天打卡
  • 变焦位移计:机器视觉如何克服人工疲劳与主观影响?精准对结构安全实时监测
  • 嵌入式硬件篇---Ne555定时器
  • 【Axure结合Echarts绘制图表】
  • 使用web3工具结合fiscobcos网络部署调用智能合约
  • Oracle/openGauss中,DATE/TIMESTAMP与数字日期/字符日期比较
  • Datatable和实体集合互转
  • Win11切换JDK版本批处理脚本
  • 爬虫学习-Scrape Center spa6 超简单 JS 逆向
  • 对数的运算困惑
  • C++ 图像处理库 CxImage 简介 (迁移至OpenCV)
  • linux系统与shell 笔记
  • 尚硅谷redis7 86 redis集群分片之3主3从集群搭建
  • Kaggle-Predict Calorie Expenditure-(回归+xgb+cat+lgb+模型融合+预测结果)
  • 【解决办法】Git报错error: src refspec main does not match any.
  • React与Vue的内置指令对比
  • 2025年5月24号高项综合知识真题以及答案解析(第1批次)
  • 【NATURE氮化镓】GaN超晶格多沟道场效应晶体管的“闩锁效应”
  • Ubuntu24.04换源方法(新版源更换方式,包含Arm64)
  • 26 C 语言函数深度解析:定义与调用、返回值要点、参数机制(值传递)、原型声明、文档注释
  • 彻底理解一个知识点的具体步骤
  • FFmpeg 时间戳回绕处理:保障流媒体时间连续性的核心机制
  • yolov8改进模型
  • PostgreSQL日常运维
  • << C程序设计语言第2版 >> 练习 1-23 删除C语言程序中所有的注释语句
  • Fluence (FLT) 2026愿景:RWA代币化加速布局AI算力市场
  • 如何撰写一篇优质 Python 相关的技术文档 进阶指南
  • 选择if day5