news 2026/8/28 23:10:47

算法竞赛备考冲刺必刷题(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/8/21 13:51:18

Node.js零基础入门:用快马平台写出第一个API

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 为Node.js初学者创建一个简单的入门项目&#xff0c;功能包括&#xff1a;1.创建一个Hello WorldAPI 2.添加路由处理不同HTTP方法 3.实现简单的请求参数处理 4.返回JSON格式响应。…

作者头像 李华
网站建设 2026/8/22 20:58:41

Z-Image-Turbo文档完善建议:用户反馈汇总

Z-Image-Turbo文档完善建议&#xff1a;用户反馈汇总 引言&#xff1a;从社区声音中提炼优化方向 阿里通义Z-Image-Turbo WebUI图像快速生成模型&#xff0c;作为基于DiffSynth Studio框架的二次开发成果&#xff0c;由开发者“科哥”构建并开源&#xff0c;已在AI图像生成社区…

作者头像 李华
网站建设 2026/8/23 4:18:32

零基础学BUCK-BOOST:从原理到简单设计

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向初学者的BUCK-BOOST教学工具&#xff1a;1. 动画演示四种工作模态&#xff1b;2. 交互式参数计算器(滑动输入电压/电流即可得元件值)&#xff1b;3. 自动生成带标注的…

作者头像 李华
网站建设 2026/8/21 13:51:26

实时地址补全:MGeo+Elasticsearch的搜索增强方案

实时地址补全&#xff1a;MGeoElasticsearch的搜索增强方案实战 你是否遇到过这样的场景&#xff1a;用户在O2O平台的搜索框中输入"朝阳区三里"&#xff0c;系统却无法智能补全为"朝阳区三里屯SOHO"&#xff1f;本文将带你用MGeo地理语言模型和Elasticsear…

作者头像 李华
网站建设 2026/8/21 13:51:24

从BERT到MGeo:预训练模型在地理领域的进化之路

从BERT到MGeo&#xff1a;预训练模型在地理领域的进化之路 你是否遇到过这样的情况&#xff1a;使用通用NLP模型处理"XX高速服务区"这类地址时&#xff0c;效果总是不尽如人意&#xff1f;这背后其实隐藏着一个重要问题——通用模型在特定领域的适配性。本文将带你了…

作者头像 李华
网站建设 2026/8/25 4:31:40

零基础教程:Ubuntu SSH远程登录图文详解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个面向Linux新手的Ubuntu SSH配置教程脚本&#xff0c;要求&#xff1a;1. 每个步骤都有清晰的echo输出说明&#xff1b;2. 包含错误检测和友好提示&#xff1b;3. 提供测…

作者头像 李华