news 2026/7/4 18:40:01

算法竞赛备考冲刺必刷题(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/6/26 6:32:45

多源数据融合:用MGeo实现工商注册地址与实地POI对齐

多源数据融合&#xff1a;用MGeo实现工商注册地址与实地POI对齐 在商业数据分析工作中&#xff0c;经常会遇到企业注册地址与实际经营场所不一致的情况。传统的人工核查方式效率低下&#xff0c;而MGeo这一多模态地理语言模型能够高效完成地址相似度匹配任务。本文将详细介绍如…

作者头像 李华
网站建设 2026/6/28 23:07:50

2026年零基础转行学网络安全怎么样?能找到什么样的工作?

网络安全对于现代社会来说变得越来越重要&#xff0c;但是很多人对于网络安全的知识却知之甚少。那么&#xff0c;零基础小白可以学网络安全吗&#xff1f;答案是肯定的。 零基础转行学习网络安全是完全可行的&#xff0c;但需要明确的是&#xff0c;网络安全是一个既广泛又深入…

作者头像 李华
网站建设 2026/7/2 12:27:04

AI如何帮你轻松掌握数据结构?快马平台实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用快马平台的AI能力&#xff0c;自动生成以下数据结构的实现代码&#xff1a;1. 双向链表的基本操作&#xff08;插入、删除、查找&#xff09; 2. 二叉搜索树的实现 3. 哈希表的…

作者头像 李华
网站建设 2026/7/1 17:09:05

NGINX ALIAS vs ROOT:性能对比与选择指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个性能测试方案&#xff0c;比较NGINX中ALIAS和ROOT指令在以下场景的表现&#xff1a;1) 大量小文件服务 2) 大文件下载 3) 高并发请求。要求&#xff1a;a) 给出测试用的…

作者头像 李华
网站建设 2026/6/30 21:29:23

如何用AI快速开发TikTok海外版竞品应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个类似TikTok海外版(TRAE)的短视频社交应用。需要包含以下功能&#xff1a;1. 短视频上传和播放功能 2. 智能推荐算法 3. 用户关注和互动系统 4. 多语言支持 5. 内容审核机制…

作者头像 李华
网站建设 2026/6/30 1:54:48

AI如何用JSMIND提升思维导图开发效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 使用JSMIND库创建一个交互式思维导图应用&#xff0c;要求支持节点拖拽、折叠展开、主题样式自定义和JSON数据导入导出功能。应用需要响应式设计&#xff0c;适配PC和移动端。AI需…

作者头像 李华