蓝桥杯倒计时 43天 - 前缀和,单调栈

最大数组和

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法思路:利用前缀和化简 for 循环将 n^2 简化成 n+n,以空间换时间。枚举每个 m,m是删除最小两个数,那k-m就是删除最大数,m<=k,求和最大的值。暴力就是枚举 m-O(n),计算前 n-(k-m)的和减去前 2*m 的和O(n+n)。前缀和能化简求前 n 个和的过程变成 O(1)的复杂度,因为前缀和能够直接进行直接查询。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 2e5+10;LL a[N];
int t,n,k;
LL sum[N];int main( ){cin>>t;while(t--){memset(a, 0, sizeof(a));memset(sum, 0, sizeof(sum));cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);for(int i=1;i<=n;i++)sum[i]=a[i]+sum[i-1];LL ans = 0;for(int m=0;m<=k;m++){ans = max(ans,sum[n-(k-m)]-sum[2*m]);}cout<<ans<<endl;}return 0;
}

可以利用 vector 化简代码,不过数组下标要从 0开始。

视野总和

描叙:有n个人站队,所有的人全部向右看,个子高的可以看到个子低的发型,给出每个人的身高,问所有人能看到其他人发现总和是多少。
输入:4 3 7 1
输出:2

思路:设置单调递减栈,复杂度 On,如果暴力,复杂度 On^2

#include<bits/stdc++.h>
using namespace std;
stack<int> st;
const int N = 1e5 +10;
int n;
int a[N];
int main( ){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int ans = 0;for(int i=1;i<=n;i++){if(st.empty()||st.top()>=a[i])st.push(a[i]);else{while(!st.empty()&&st.top()<a[i]){st.pop();ans++;}st.push(a[i]);if(st.empty())ans--;}}cout<<ans<<endl;return 0;
}

柱状图中的最大矩形

柱状图中的最大矩形
在这里插入图片描述
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 +10;
int n;
int a[N];
vector<int> heights;
int main( ){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int ans = 0;for(int i=1;i<=n;i++){int wide=1;for(int j=i-1;j>=1;j--){if(a[j]>=a[i])wide++;}for(int j=i+1;j<=n;j++){if(a[j]>=a[i])wide++;}ans = max(ans,wide*a[i]);}cout<<ans<<'\n';return 0;
}

四元组问题

在这里插入图片描述
在这里插入图片描述
青茶绿梅*2博主讲的很好

暴力做法 n^4 能过 50%,所以需要进行优化,这题需要 n 或 nlogn 的时间复杂度。
算法思路:将四元组问题转化成三元组(单调递减栈)+前缀和问题。假设前三个元素已经知道,那只需要找到小于 c 的 d 则四元组存在,利用后缀和来得到c后面的最小值作为 d。然后找前三元组,前三元组的 abc 的曲线画出来有利于理解。算法思路:将一个元素入栈,然后从左到右依次与栈顶判断,如果小于栈顶入栈,如果大于栈顶,则出栈直到小于栈顶或栈元素为空,这时,最后一个出栈的为 a,入栈元素为 b,如果接下来继续操作,找到比栈顶元素大,则继续刚才过程,同时更细 a 与 b,如果找到比栈顶元素小,则为 c 可以查询后缀和判断是否有 d 的存在。栈顶元素是目前最大的 b。
模拟一下:1000 333 222 888 999 100 50

#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 +10;
int n;
int nums[N];
stack<int> st;
int main( ){cin>>n;for(int i=1;i<=n;i++)cin>>nums[i];int k=INT_MIN;vector<int>min_r(n,INT_MAX);for (int i=n-1; i>=1; i--) {min_r[i] = min(min_r[i+1],nums[i]);}for(int i=1;i<=n;i++){if(k>nums[i]&&nums[i]>min_r[i]){cout<<"YES";return 0;}while(!st.empty()&&st.top()<nums[i]){k = max(k,nums[i]);st.pop();}st.push(nums[i]);}cout<<"NO";return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCSA时钟控制集成之时钟门控级别

这一部分描述了&#xff1a; • 时钟门控的级别。 • 实现最大效果的时钟门位置。 • 实现有效和高效时钟门控的集成方法。 时钟树是由时钟缓冲器构建的&#xff0c;这些缓冲器在时钟源&#xff08;时钟输入或PLL&#xff09;与时钟终端&#xff08;寄存器或RAM&#xff09…

ULN2003(COM的作用)

单路内部电路原理图 三极管多级放大电路&#xff0c;最大可达到500ma&#xff1b; 典型应用&#xff1a; ULN2003属于灌电流驱动方式&#xff1b;输入与输出电平反向&#xff0c;下拉4K电阻&#xff0c;为解决单片机上电IO瞬间不稳定&#xff1b; COM端 1.可悬空&#xff1a…

git标签操作

一.标签管理 1.理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名,当我们需要回退到某个重要版本时&#xff0c;直接使⽤标签就能很快定位到 2.创建标签 ⾸先&#xff0c;切换到需要打标签的分⽀上,然后&#xf…

经典目标检测网络Yolo——原理部分

目标检测问题 分为两个子问题: 找到图片中哪些位置、哪些区域含有目标对象识别这些区域中的目标对象是什么基于CNN的目标检测算法能够很好的解决第二个问题,在一张图片仅含一个对象,且该对象占据了整张图片绝大部分面积时,基于CNN的对象识别算法具有很高的准确率。 一种定…

操作系统(1)——学习导论(Ⅱ)

目录 小程一言专栏链接: [link](http://t.csdnimg.cn/6grrU) 学习导论&#xff08;Ⅱ&#xff09;操作系统-赏前人佳作大型操作系统大型操作系统的一些特点和功能举例 服务器操作系统服务器操作系统特点和功能举例 多处理器操作系统举例 个人计算机操作系统举例 掌上计算机操作…

设计模式:什么是设计模式?①

一、什么是设计模式&#xff1f; 1. 是一类程序设计思想 2. 是在大量实践过程中摸索总结出的标准经验提炼 3. 具有多样性和丰富性&#xff0c;不同情况应用的思想不同 二、设计模式的好处 1. 代码生产力和效率的提升 2. 让代码表现更为规整&#xff0c;简洁。阅读维护管理的成本…

【竞技宝】DOTA2-梦幻联赛S22:AR命悬一线 XG确定晋级淘汰赛

北京时间2024年2月28日&#xff0c;DOTA2梦幻联赛S22的比赛在昨日进入小组赛第三个比赛日&#xff0c;本次梦幻联赛共有AR、XG、IG三支中国区的队伍参赛&#xff0c;那么经过三日激烈的比赛之后&#xff0c;目前三支队伍的积分情况以及晋级形势如何呢&#xff1f; XG XG是小组…

贪心(基础算法)--- 区间选点

905. 区间选点 思路 &#xff08;贪心&#xff09;O(nlogn) 根据右端点排序 将区间按右端点排序 遍历区间&#xff0c;如果当前区间左端点不包含在前一个区间中&#xff0c;则选取新区间&#xff0c;所选点个数加1&#xff0c;更新当前区间右端点。如果包含&#xff0c;则跳…

常见的算法

查找算法 基本查找 package MyApi.search;public class a01BasicSearchdemo01 {public static void main(String[] args) { int[] arr{131,127,147,81,103,23,7,79}; int number82;System.out.println(BasicSearch(arr,number));}public static boolean BasicSearch(int[] ar…

Java二叉树(1)

&#x1f435;本篇文章将对二叉树的相关概念、性质和遍历等知识进行讲解 一、什么是树 在讲二叉树之前&#xff0c;先了解一下什么是树&#xff1a;树是一种非线性结构&#xff0c;其由许多节点和子节点组成&#xff0c;整体形状如一颗倒挂的树&#xff0c;比如下图&#xff1…

给nginx部署https及自签名ssl证书

一、生成服务器root证书 openssl genrsa -out root.key 2048 openssl req -new -key root.key -out root.csr#Country Name (2 letter code) [XX]:---> CN#Country Name (2 letter code) [XX]:---> CN#State or Province Name (full name) []:---> Shanghai#Locality…

多层感知机 + 代码实现 - 动手学深度学习v2 | 李沐动手学深度学习课程笔记

感知机 感知机≈二分类问题 感知机和其他问题的对比 训练感知机 如果小于等于零&#xff0c;说明预测错啦 &#xff0c;其实就是同号为正&#xff0c;异号为负 举个分类的例子 增加样本&#xff0c;改变分类线 继续分类 感知机的收敛定理 XOR问题 XOR问题其实就是第1、3象限数…

【踩坑】一条指令解决torch_scatter等安装报错安装不上问题

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 目录 背景说明 (推荐方法)解决方法一&#xff1a;使用conda安装。 解决方法二&#xff1a;指定pip的网站。 解决方法三&#xff1a;直接去下载whl文件。 (终极方法)解决方法四&#xff1a;配置MSVC 特殊情况…

构建 ESLint 内存泄露检测插件入门:提升代码质量与防范运行时风险

前言 本文目的是介绍如何创建开发一个自定义规则 ESLint 插件。利用其能力,检测一些代码中可能存在的内存泄露并及时进行提示,避免潜在的后期影响。 本文实现其中一部分功能–检测事件监听器的使用是否存在内存泄露为例来演示基本的 ESLint 自定义规则插件开发的过程。用以…

nginx笔记整理

目录 一.Nginx基础介绍 二.nginx安装配置 三.Nginx配置文件 3.1nginx主配置文件(/etc/nginx/nginx.conf) 3.2默认的网站配置文件(/etc/nginx/conf.d/default.conf) 四.创建新的虚拟主机 五.Nginx日志 5.1nginx日志格式 5.2查看日志 5.3日志缓存(了解) 5.4日志轮转(/…

COMPOSER安装使用WIN下升级PHP-V

想用TP6使用phpspreadsheet但是说我PHP版本低&#xff0c;原来是PHP7.0 composer要求至少7.4 直接修改环境变量&#xff0c;把PHP目录切换到7.4 composer升级比较简单&#xff0c;在PHP目录下CMD然后官网的命令执行下即可 下面就可以在TP根目录下执行命令安装PHPSPREADSHEET…

Domain-Wall Memory Buffer for Low-Energy NoCs

目录 Domain-Wall Memory Buffer for Low-Energy NoCs主要工作DWM&#xff1a; Domain-wall memory磁畴壁存储器磁性纳米线阵列设计 开销分析实验设计实验结果分析 参考资料 Domain-Wall Memory Buffer for Low-Energy NoCs 主要工作 我们基于SRAM在NoC中使用的头尾指针概念&a…

2024年【道路运输企业主要负责人】考试报名及道路运输企业主要负责人模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 道路运输企业主要负责人考试报名根据新道路运输企业主要负责人考试大纲要求&#xff0c;安全生产模拟考试一点通将道路运输企业主要负责人模拟考试试题进行汇编&#xff0c;组成一套道路运输企业主要负责人全真模拟考…

字符串匹配——烦人的KMP

相信很多同学看到这篇文章的时候&#xff0c;已经被KMP拿捏了吧&#xff01;KMP算法说难&#xff0c;倒也不是很难&#xff0c;手算都会&#xff0c;说不难吧&#xff0c;短短几行代码愣是看不懂&#xff0c;辗转反侧&#xff0c;翻书查阅&#xff0c;视频讲解&#xff0c;最后…

electron nsis 安装包 window下任务栏无法正常固定与取消固定 Pin to taskbar

问题 win10系统下&#xff0c;程序任务栏在固定后取消固定&#xff0c;展示的程序内容异常。 排查 1.通过论坛查询&#xff0c;应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…