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

蓝桥杯每日一题

丢失的雨伞

  • 题目
  • 思路
  • 代码演示

题目

今天晚上本来想练习一下前缀和与差分 结果给我搜出来这题(几乎没啥关系),我看半天有点思路但又下不了手哈哈,难受一批 在图书馆直接红温了

在这里插入图片描述
题目链接

思路

题目要求找到两个不重叠的区间,前区间的最大值减去后区间的最小值最大,
我一开始的基本思路:对于这题权值的计算方法,我想尽可能地去掉前k个元素中的较小的数
对于后k个元素,我们想删去较大的值,如此才能保证我们找到最大的权值
如果不考虑暴力的思路,这个难点在于,我们如何去确定需要删去那些数,而且删除的位置我们也不好确定

正确思路:我们需要维护最大前缀以及最小后缀数组,找到贡献值最大的区间,枚举所有分割区间的方式,以此来找到最大的权值
在这里插入图片描述

代码演示

#include <iostream>
using namespace std;

const int N = 100100;
int arr[N];         // 存储原始数组
int prefixMax[N];   // prefixMax[i] 表示前 i 个元素的最大值
int suffixMin[N];   // suffixMin[i] 表示从 i 到末尾元素的最小值

int main() {
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n; ++i)
        cin >> arr[i];

    // 预处理前缀最大值数组
    prefixMax[0] = 0;
    for (int i = 1; i <= n; ++i)
        prefixMax[i] = max(prefixMax[i - 1], arr[i]);

    // 预处理后缀最小值数组
    suffixMin[n + 1] = 1e9 + 10;  // 初始化末尾之后的最小值为极大值
    for (int i = n; i > 0; --i)
        suffixMin[i] = min(suffixMin[i + 1], arr[i]);

    int answer = -2e9;
    // 遍历所有合法的分割位置,计算权值最大值
    for (int i = k; i <= n - k; ++i)
        answer = max(answer, prefixMax[i] - suffixMin[i + 1]);

    cout << answer;
    return 0;
}

在这里插入图片描述

相关文章:

  • 汽车PKE无钥匙进入系统一键启动系统定义与原理
  • 需求文档(PRD,Product Requirement Document)的基本要求和案例参考:功能清单、流程图、原型图、逻辑能力和表达能力
  • 晶艺代理,100V3.5A高耐压LA1823完全替换MP9487--启烨科技有限公司
  • 第一章:Tailwind CSS基础与项目设置 - 第三节:GitHub界面分析 - 设计规范与布局系统
  • CSS 属性选择器详解
  • [C++面试] 标准容器面试点
  • 机器学习——深入浅出理解朴素贝叶斯算法
  • 一个简单的RPC示例:服务端和客户端
  • 【mysql】查事务进程
  • gstreamer之GstVideoDecoder源码剖析
  • Spark DataFrame、Dataset 和 SQL 解析原理深入解析(万字长文多张原理图)
  • 计算机二级web易错点(3)-选择题
  • qwen2.5总览
  • 基于 YOLOv8 的瓷砖缺陷检测:从数据准备到模型部署的全流程实战
  • 探索具身多模态大模型:开发、数据集和未来方向(下)
  • Python----数据分析(Pandas三:一维数组Series的数据操作:数据清洗,数据转换,数据排序,数据筛选,数据拼接)
  • 市长海报/ Mayor‘s posters
  • MySQL 锁
  • 浅谈StarRocks SQL性能检查与调优
  • 判断字符串是否为回文(信息学奥赛一本通-1146)
  • 1至4月全国铁路完成固定资产投资1947亿元,同比增长5.3%
  • 佩斯科夫:俄会考虑30天停火提议,但试图对俄施压无用
  • 巴防空系统击落印度无人机,印称巴方违反停火协议
  • 价格周报|供需回归僵局,本周生猪均价与上周基本持平
  • 开局良好,我国第一季度广告业务收入保持较快增速
  • 美乌基金协议:美国搞了一套可在资源富集地区复刻的商业模式