当前位置: 首页 > news >正文

小苯的能量项链【牛客tracker 每日一题】

小苯的能量项链

时间限制:1秒
空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

小苯有一个含有n nn颗珠子的“能量项链”,珠子排成一排,其中第i ii颗珠子的能量为a i a_iai

但是这个项链并不稳定,如果项链的珠子个数不少于 3 个,则它即将发生“崩坏”,即:除了第一颗珠子和最后一颗珠子以外的其余所有珠子都将销毁,最终只留下第一颗和最后一颗珠子。

小苯现在希望项链在“崩坏”后保留尽可能多的能量,为此他可以在崩坏前执行以下的操作:

两种操作各自均需要花费 1 秒时间,而现在距离项链发生“崩坏”仅剩k kk秒,小苯想知道,他最多可以保留住多少能量,请你帮他算一算吧。

输入描述

每个测试文件内都包含多组测试数据。

第一行一个正整数T ( 1 ≤ T ≤ 1000 ) T\ (1 \le T \le 1000)T(1T1000),表示测试数据的组数。

接下来对于每组测试数据,输入包含两行。

第一行两个整数n , k ( 1 ≤ n ≤ 5 × 10 5 , 0 ≤ k ≤ 10 9 ) n,k\ (1 \le n \le 5 \times 10^5,0 \le k \le 10^9)n,k(1n5×105,0k109),表示项链的珠子个数和距离项链“崩坏”的时间。

第二行n nn个正整数a i ( 1 ≤ a i ≤ 10 9 ) a_i\ (1 \le a_i \le 10^9)ai(1ai109),表示每颗珠子的能量。

(保证所有测试数据中n nn的总和不超过5 × 10 5 5 \times 10^55×105。)

输出描述

对于每组测试数据,输出一行一个整数表示小苯能保留的最大能量。

示例1

输入:

2 5 2 2 3 4 5 2 1 1 114514

输出:

8 114514

说明:
对于第一组测试数据,距离发生“崩坏”还有k = 2 k=2k=2秒,最优的方案是删除目前的第一个和最后一个数字,那么项链的能量会变成{ 3 , 4 , 5 } \{3,4,5\}{3,4,5},最终3 335 55会保留下来,因此最大值为8 88

对于第二组测试数据,由于项链珠子个数小于3,因此不会发生崩坏,最终保留的能量就是114514 114514114514

解题思路

本题是贪心 + 滑动窗口维护前缀最大值的经典题型。需要在最多k kk次删除头/尾操作后,使得最终(可能崩坏后)保留的能量最大。由于崩坏只保留首尾两个珠子(若剩余珠子数≥ 3 \ge 33),或者剩余珠子数< 3 <3<3时直接保留全部,问题可以转化为选择两个位置l ≤ r l \le rlr作为最终保留的首尾,满足操作次数限制,并最大化v l + v r v_l + v_rvl+vr

1. 问题等价转化
2. 算法设计
3. 复杂度分析

总结

将操作后的首尾保留问题转化为选择满足约束的两个位置,通过固定右端点并维护左侧前缀最大值,在线性时间内求出最大能量和。dif的设置巧妙涵盖了剩余珠子数为2 22(不崩坏)和≥ 3 \ge 33(崩坏)两种情况,使算法统一简洁。

代码内容

#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll INF=1e18;constll M=1e6+10;constll mod=998244353;usingi128=__int128_t;voidsolve(){ll n,k;cin>>n>>k;vector<ll>v(n+1);for(ll i=1;i<=n;i++)cin>>v[i];if(n<3){ll ans=0;for(ll i=1;i<=n;i++)ans+=v[i];cout<<ans<<'\n';return;}ll dif=max(2LL,n-k);ll mx=0;ll ans=0;for(ll i=dif;i<=n;i++){mx=max(mx,v[i-dif+1]);ans=max(ans,mx+v[i]);}cout<<ans<<'\n';}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll t;cin>>t;while(t--)solve();return0;}
http://www.cnnetsun.cn/news/4299991.html

相关文章:

  • 0.3%差距背后的技术选型真相:从DeepSeek接入Claude Code看工程成本
  • 湿度传感器的类型有哪些?国产平替的优势
  • ROS2机器人自主导航与视觉系统构建实战指南
  • Rmweb:为reMarkable Paper Pro打造的软件渲染墨水屏浏览器
  • 从OpenAI自研芯片看AI芯片之争:GPU、CUDA与开发者实战
  • 【2026年】通风柜气流组织CFD仿真分析与应用
  • 水下图像增强融合算法MATLAB实现与参数调优详解
  • Python 的异常处理机制 —— 可选导入:开源包init.py优雅降级实践
  • 【AI 业务流架构师】04-Markdown调教法:铸造Agent的人格内核与价值观
  • STM32H723ZGT6与AT25SF128A:外部加载器开发与SPI Nor Flash烧录实战
  • 12岁小学生重构Python代码:一场教科书级重构实战
  • 网易运维开发笔试真题复盘:Linux、脚本、监控与CI/CD考点全解析
  • GitHub每日热评|OpenAI Codex 源码解析:一个 Rust 工具型项目是如何组织 CLI、工作流与测试的
  • 国企绩效考核破局之道:从制度设计到数字赋能的完整路径
  • Java SE 基础 · 点1 封装
  • 驱动盘清理SOP:告别仓库爆满,一套流程搞定绝区零装备管理
  • STM32C5 ADC交错采样配置实战:从原理到CubeMX与DMA调试
  • 低功耗MCU踩坑:STANDBY下SideKick协处理器GPIO误判根因与修复
  • 智能体延迟优化指南:从毫秒级推理到工具调用链路
  • SSM停车场管理系统源码解析:从框架原理到部署实战
  • 数据库工程与查询优化案例深度复盘‌
  • 工厂数字孪生平台选型指南:从车间透明化到能源可视化
  • 2013年Google笔试题精讲:从算法内核到面试实战的修炼指南
  • PDF流式编辑实现文字修改自动重排版:原理、实践与工具
  • 雌激素雄性化神经通路的Python模拟:从机制到代码
  • 从0.3%到10%:DeepSeek V4-Pro与Claude Code的真实工程差距与接入实践
  • 科普:Python中的生成器——带`yield`的函数
  • Tiny JPEG在Chrome中发灰?一文讲透色度子采样与浏览器渲染的真相
  • AI失控风险与可控性实践:从赫拉利警示到本地大模型安全部署
  • 2026 时序基础模型:大模型不只聊天,还能预测设备何时会坏(MonkeyCode 云端实战)