news 2026/4/16 11:54:13

算法竞赛备考冲刺必刷题(C++) | 洛谷 P1638 逛画展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(C++) | 洛谷 P1638 逛画展

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P1714 切蛋糕 - 洛谷

【题目描述】

今天是小 Z 的生日,同学们为他带来了一块蛋糕。这块蛋糕是一个长方体,被用不同色彩分成了n nn个相同的小块,每小块都有对应的幸运值。

小 Z 作为寿星,自然希望吃到的蛋糕的幸运值总和最大,但小 Z 最多又只能吃m ( m ≤ n ) m(m\le n)m(mn)小块的蛋糕。

请你帮他从这n nn小块中找出连续k ( 1 ≤ k ≤ m ) k(1 \le k\le m)k(1km)块蛋糕,使得其上的总幸运值最大。

形式化地,在数列{ p n } \{p_n\}{pn}中,找出一个子段[ l , r ] ( r − l + 1 ≤ m ) [l,r](r-l+1\le m)[l,r](rl+1m),最大化∑ i = l r p i \sum\limits_{i=l}^rp_ii=lrpi

【输入】

第一行两个整数n , m n,mn,m。分别代表共有n nn小块蛋糕,小 Z 最多只能吃m mm小块。

第二行n nn个整数,第i ii个整数p i p_ipi代表第i ii小块蛋糕的幸运值。

【输出】

仅一行一个整数,即小 Z 能够得到的最大幸运值。

【输入样例】

5 2 1 2 3 4 5

【输出样例】

9

【算法标签】

《洛谷 P1714 切蛋糕》 #单调队列# #前缀和# #队列# ST表

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 将int重新定义为long long类型constintN=500005;// 定义常量N,最大数组大小intn,m,a[N],sa[N],ans=-1e9;// n: 数组长度, m: 最大子数组长度, a: 原始数组, sa: 前缀和数组, ans: 结果structNode{ints,idx;// s: 前缀和值, idx: 索引位置};deque<Node>dq;// 双端队列,用于维护滑动窗口最小值signedmain()// 因为使用了#define int long long, 所以用signed main{cin>>n>>m;// 输入数组长度和最大子数组长度for(inti=1;i<=n;i++){cin>>a[i];// 输入数组元素sa[i]=sa[i-1]+a[i];// 计算前缀和}for(inti=1;i<=n;i++){// 维护队列:删除超出窗口范围的元素// 窗口大小为m,只考虑i-m到i-1的前缀和while(dq.size()){if(dq.front().idx<i-m)// 如果队首元素索引小于i-m,超出窗口范围dq.pop_front();// 删除队首元素elsebreak;// 否则停止}// 维护队列:保持队列单调递增// 如果队尾元素的前缀和大于等于当前前缀和,则删除队尾元素// 因为对于后面的i来说,当前元素更优(前缀和更小,索引更靠后)while(dq.size()){if(dq.back().s>=sa[i-1])// 如果队尾元素的前缀和大于等于当前前缀和dq.pop_back();// 删除队尾元素elsebreak;// 否则停止}// 将当前元素的前缀和加入队列dq.push_back({sa[i-1],i-1});// 更新答案:当前前缀和减去队列最小值// 即sa[i] - sa[j] 表示子数组a[j+1...i]的和ans=max(ans,sa[i]-dq.front().s);}cout<<ans<<endl;// 输出最大子数组和return0;}

【运行结果】

5 2 1 2 3 4 5 9
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 18:16:11

地址要素智能提取:MGeo在不动产登记中的应用

地址要素智能提取&#xff1a;MGeo在不动产登记中的应用实战 不动产登记中心经常需要处理大量历史文档&#xff0c;其中包含关键的地址信息如"省-市-区-街道-门牌号"等结构化数据。但文档扫描质量参差不齐&#xff0c;传统OCR提取方式准确率有限。本文将介绍如何利用…

作者头像 李华
网站建设 2026/4/16 11:08:45

GitBash下载后必做的5个实战配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个GitBash配置优化指南应用&#xff0c;展示5个最实用的配置方案&#xff1a;1) 别名设置&#xff1b;2) 主题美化&#xff1b;3) 常用命令预设&#xff1b;4) 与VS Code集成…

作者头像 李华
网站建设 2026/4/16 11:15:20

MyBatis零基础入门:30分钟搭建第一个应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个最简单的MyBatis入门示例&#xff0c;实现一个记事本应用的基础功能&#xff1a;1) 添加记事 2) 查看记事列表 3) 删除记事。要求&#xff1a;使用最简化的配置&#xff0…

作者头像 李华
网站建设 2026/4/16 10:39:22

POI数据治理实战:用MGeo预置镜像解决连锁门店地址归一化

POI数据治理实战&#xff1a;用MGeo预置镜像解决连锁门店地址归一化 连锁企业在经营过程中&#xff0c;门店地址数据的管理往往面临一个棘手问题&#xff1a;同一个门店在CRM系统中可能存在多种不同的记录方式。例如"北京市海淀区中关村大街1号"可能被记录为"北…

作者头像 李华
网站建设 2026/4/16 10:40:53

模型即服务:将MGeo地址匹配封装为RestAPI的完整指南

模型即服务&#xff1a;将MGeo地址匹配封装为RestAPI的完整指南 作为一名全栈工程师&#xff0c;我最近接到一个任务&#xff1a;将MGeo地址匹配能力集成到公司的Java系统中。面对这个需求&#xff0c;我既兴奋又忐忑——兴奋的是能接触前沿的AI技术&#xff0c;忐忑的是对机器…

作者头像 李华
网站建设 2026/4/16 10:46:40

零基础入门:10分钟用FingerprintJS实现浏览器指纹识别

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个极简的FingerprintJS入门示例&#xff0c;包含&#xff1a;1) 基础HTML页面&#xff1b;2) 最简单的FingerprintJS集成代码&#xff1b;3) 显示指纹结果的UI&#xff1b;4…

作者头像 李华