y1,y2总复习笔记8 2026.7.22
好吧今天没有最小生成树的prim一单调栈维护一个栈使栈内所有元素严格保持单调递增或单调递减实现过程初始化空栈栈中推荐存下标而非数值方便计算距离、边界循环遍历数组每一个下标 i while 栈不为空 且 当前元素破坏栈单调性 弹出栈顶元素 top 此时 栈顶的目标边界就是 i记录答案将当前下标 i 压入栈模板例题找每个数字左侧第一个更小的数字按照实现过程得到代码如下#includebits/stdc.h using namespace std; const int N1e55; stackint st; int a[N]; int main(){ int n; cinn; for(int i1;in;i){ cina[i]; } for(int i1;in;i){ while(!st.empty()a[st.top()]a[i]){ st.pop(); } if(st.empty()) cout-1 ; else couta[st.top()] ; st.push(i); } }真正的例题区间最小值问题给出正整数n和一个长度为n的数列要求找出一个子区间使这个子区间的数字之和乘上子区间中的最小值最大。我们的思路如下枚举区间左右端点搞贪心肯定不行1≤n≤10^5​​,0≤a[i]≤10^​6​​那我们的思路转移到最小值上枚举每一个点作为一个区间的最小值再反推求这个区间的左端点和右端点那区间端点怎么求呢一个数要想成为这个区间的最小值显然这个区间里不能再有比它小的数在它左边找第一个比它小的那这个第一个比它小的右边自然都比它大了在它右边找第一个比它小的那这个第一个比它小的左边自然都比它大了这样就得到了一个区间而找第一个比它小的数的过程我们考虑单调栈区间和直接采用前缀和代码如下long long 警告1-1警告#includebits/stdc.h using namespace std; const int N1e55; stackint st; int a[N],L[N],R[N],sum[N]; int main(){ int n; cinn; for(int i1;in;i){ cina[i]; sum[i]sum[i-1]a[i]; } for(int i1;in;i){ while(!st.empty()a[st.top()]a[i]){//留大的就是找左边第一个比自己小的 st.pop(); } if(st.empty()) L[i]0; else L[i]st.top(); st.push(i); } while(!st.empty()) st.pop(); for(int in;i1;i--){ while(!st.empty()a[st.top()]a[i]){ st.pop(); } if(st.empty()) R[i]n1; else R[i]st.top(); st.push(i); } int ans-1,l,r; for(int i1;in;i){ if(ans(sum[R[i]-1]-sum[L[i]])*a[i]){ ans(sum[R[i]-1]-sum[L[i]])*a[i]; lL[i]1; rR[i]-1; } } coutans\nl r; }本来想再放一个题但是都差不多其实就这样吧二单调队列队列内元素保持单调递增 / 单调递减的双端队列叫做单调队列求解问题定长滑动窗口最大值、最小值在这其中想要的元素在队头所以想要最小值从队头到队尾单调递增想要最小值从队头到队尾单调递减删除队头的情况队头太远不在所求范围内。删除队头无论如何要把a[i]插入队尾实现过程队尾维护单调性新元素 a[i] 入队前不断把队尾不如 a[i] 优的元素弹出。以单调递减求窗口最大值为例 若 a[i]≥a[q.back()]队尾元素可以永久删除。逻辑只要 i 还在窗口里队尾这个数永远不可能成为任何窗口的最大值没有保留价值。队头剔除过期元素窗口不断右移如果队头下标 q.front()≤i−k说明已经跑出窗口左边界弹出队头。维护单调的过程若要添加的元素小于队尾元素则不断末尾出队直至队尾元素小于要添加的元素。维护长度的过程若队列长度超过规定长度则队头出队。模板滑动窗口最大值for(int i1;in;i){ while(!q.empty() a[i] a[q.back()]){ q.pop_back(); } q.push_back(i); //注意存储下标 while(q.front() i - k){ q.pop_front(); } if(i k){ couta[q.front()] ; } }回顾一下二维前缀和的二次扫描法二维前缀和的二次扫描法 假设sum[i][j]a[i][j] for(int i1;in;i){ for(int j1;jn;j){ sum[i][j]sum[i][j-1]; } } for(int i1;in;i){ for(int j1;jn;j){ sum[i][j]sum[i-1][j]; } }第一层循环对每一行求一维前缀和x-------x-------x-------此时的sum[i][x]已经累加了该行前面的所有元素sum[i][j]只代表第 i 行前 j 个元素总和还不是二维前缀和。第二层循环对每一列求一维前缀和现在sum[i][j]本身已经是第 i 行横向前缀和 再纵向累加上面一行同列的值。就得到了二维前缀和注意查询x1,y2)(x2,y2)子矩形anssum[x2​][y2​]−sum[x1​−1][y2​]−sum[x2​][y1​−1]sum[x1​−1][y1​−1]例题来了理想的正方形有一个n×m的整数组成的矩阵现请你从中找出一个k×k的正方形区域使得该区域所有数中的最大值和最小值的差最小。与我们的二次扫描前缀和同源先对每一行用单调队列求出每行内、长度为 k 的滑动窗口最大值、最小值 得到两个新矩阵row_max[i][j]、row_min[i][j]第 i 行区间的最大值。再对row_max的每一列做单调队列窗口大小 k 得到sq_max[x][y]左上角对应 (x-k1,y-k1) 的正方形最大值。同理对row_min每一列单调队列得到每个正方形最小值sq_min[x][y]。遍历所有正方形求。思路大概是这样的代码如下#includebits/stdc.h #define ll long long const int N1e35; using namespace std; int n,m,k,a[N][N],r_max[N][N],r_min[N][N],ans0x7fffffff; dequeint Max,Min; int main(){ scanf(%d%d%d,n,m,k); for(int i1;in;i){ for(int j1;jm;j){ scanf(%d,a[i][j]); } } for(int i1;in;i){ for(int j1;jm;j){ while(!Max.empty()Max.front()kj){ Max.pop_front(); } while(!Max.empty()a[i][Max.back()]a[i][j]){ Max.pop_back(); } Max.push_back(j); while(!Min.empty()Min.front()kj){ Min.pop_front(); } while(!Min.empty()a[i][Min.back()]a[i][j]){ Min.pop_back(); } Min.push_back(j); if(jk){ r_min[i][j]a[i][Min.front()]; r_max[i][j]a[i][Max.front()]; } } while(!Max.empty()) Max.pop_front(); while(!Min.empty()) Min.pop_front(); } for(int jk;jm;j){ for(int i1;in;i){ while(!Max.empty()Max.front()ki){ Max.pop_front(); } while(!Max.empty()r_max[Max.back()][j]r_max[i][j]){ Max.pop_back(); } Max.push_back(i); while(!Min.empty()Min.front()ki){ Min.pop_front(); } while(!Min.empty()r_min[Min.back()][j]r_min[i][j]){ Min.pop_back(); } Min.push_back(i); if(ik){ ansmin(ans,r_max[Max.front()][j]-r_min[Min.front()][j]); } } while(!Max.empty()) Max.pop_front(); while(!Min.empty()) Min.pop_front(); } coutans; }

相关新闻

什么是“利旧“?以魅视边缘计算为例

什么是“利旧“?以魅视边缘计算为例

一、什么是"利旧"? "利旧"这个词在安防和信息化行业并不新鲜,但在AI改造浪潮中被赋予了新的含义。 传统意义上的利旧,指的是在系统升级或改造时,保留原有设备继续使用,不替换、不报废。比如机房改…

2026/10/2 17:29:50 阅读更多 →
AMD锐龙SDT调试工具:解锁Ryzen处理器隐藏性能的终极指南

AMD锐龙SDT调试工具:解锁Ryzen处理器隐藏性能的终极指南

AMD锐龙SDT调试工具:解锁Ryzen处理器隐藏性能的终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…

2026/10/11 0:07:57 阅读更多 →
Free LLM Balancer:本地与云端智能负载均衡开源方案

Free LLM Balancer:本地与云端智能负载均衡开源方案

Free LLM Balancer:整合本地推理与云端备援的智能负载均衡方案 在实际的LLM应用开发中,我们经常面临一个核心矛盾:本地部署虽然成本可控且数据安全,但受限于硬件资源;云端服务虽然性能强大,但长期使用成本高…

2026/10/13 17:26:26 阅读更多 →

最新新闻

免费AI配音工具怎么选?媒小三配音与声音克隆功能介绍

免费AI配音工具怎么选?媒小三配音与声音克隆功能介绍

寻找免费 AI 配音工具时,很多人最关心三个问题:能不能免费体验、生成的声音是否自然,以及能否满足短视频日常创作需求。媒小三配音是一款结合 AI 配音、声音克隆和文案辅助功能的工具,提供网页、APP和微信小程序等使用入口。如果你…

2026/10/14 16:26:37 阅读更多 →
Mac Duo调试实战指南:用lidprobe命令行工具与os.Logger追踪传感器与渲染管线的每一毫秒

Mac Duo调试实战指南:用lidprobe命令行工具与os.Logger追踪传感器与渲染管线的每一毫秒

【免费下载链接】Mac-Duo Wish you could bring the iPhone Duo effect to your MacBook? 项目地址: https://gitcode.com/gh_mirrors/mac/Mac-Duo 点击查看 免费下载 Mac Duo 是一款把 iPhone Duo 闭盖特效带进 MacBook 的菜单栏应用:合上盖子&#x…

2026/10/14 16:26:37 阅读更多 →
家政服务小程序开发:核心功能与关键技术解析

家政服务小程序开发:核心功能与关键技术解析

1. 项目背景与市场需求分析最近两年,本地生活服务类小程序呈现爆发式增长,其中家政服务因其高频、刚需的特性成为热门赛道。我去年为某连锁家政品牌开发的预约系统,上线后订单量提升了37%,客户留存率提高了22%。这个成绩让我意识到…

2026/10/14 16:26:37 阅读更多 →
乔丹传奇:从篮球之神到商业偶像的五大成功要素

乔丹传奇:从篮球之神到商业偶像的五大成功要素

1. 为什么我们需要重新认识乔丹?1998年NBA总决赛第六场最后5.2秒,芝加哥公牛队83-86落后犹他爵士队。当篮球传到乔丹手中时,整个三角洲中心球馆的空气仿佛凝固了。这个穿着23号红色球衣的男人,用一记教科书般的急停跳投&#xff0…

2026/10/14 16:26:37 阅读更多 →
WuKongIM 有界云租约(Cloud Lease)暴露负载节点:Chat Lifecycle 的临时入口设计与实现解析

WuKongIM 有界云租约(Cloud Lease)暴露负载节点:Chat Lifecycle 的临时入口设计与实现解析

即时通讯后端 【免费下载链接】WuKongIM More than just IM 不只是即时通讯(IM) 项目地址: https://gitcode.com/gh_mirrors/wu/WuKongIM 点击查看 免费下载 导读 本文围绕 WuKongIM 仓库中的架构决策记录 ADR-0042(Expose the load node for the boun…

2026/10/14 16:26:37 阅读更多 →
AI生成内容检测与降AI工具实战评测

AI生成内容检测与降AI工具实战评测

1. 项目背景与需求解析在学术写作领域,AI生成内容的检测问题已成为全球学者关注的焦点。2023-2024年间,多所高校和期刊编辑部开始采用AI检测工具对投稿论文进行筛查,部分机构甚至明确要求论文AI生成率不得超过10%。这种技术监管的突然收紧&am…

2026/10/14 16:25:37 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →