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

终别【牛客tracker 每日一题】

终别

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

网页链接

牛客tracker

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


题目描述

不想对你说句感谢,
始终将它埋藏心中,
离别总是在纯洁无瑕的,
梦境过后 悄然而至,
纷纷飘落在双手间的碎片,
无论何时 无论何时都要紧紧握住,
敢于笑到最后的那份坚强,
已然深有体会。
——《Last Regrets》

小C要退役了,可他依然喜欢信息以及从信息中认识的那些人,无论他们是否曾相识……

珂朵莉讨厌共n nn只十七兽,它们站成一排,每只十七兽站在一个位置上,她的斩击可以连续3 33个位置上的十七兽(也可以只使一只,或相邻两只受到伤害),每一只受到一点伤害,当一个十七兽的血量归零时,视为该十七兽被消灭(但位置仍然保留),她还拥有一个魔法,魔法可以在战斗中的任意时刻使用,但只能使用一次,可以直接消灭相邻的2 22个位置上的十七兽(只有一只也可以使用,位置仍然保留)。请问,她最少需要挥出多少次斩击,能够消灭所有十七兽?因为她已经筋疲力尽了,所以需要聪明的你来帮她她!


输入描述

第一行一个数n nn,分别表示十七兽的数量。

第二行共n nn个整数,第i ii个整数表示a i a_iai,表示第i ii只十七兽的血量。

数据范围:1 ≤ n ≤ 10 6 , 0 ≤ a i ≤ 10 9 1 \le n \le 10^6,\ 0 \le a_i \le 10^91n106,0ai109


输出描述

共一个数,表示珂朵莉需要挥出的斩击数。


示例 1

输入:

3 2 0 1

输出:

1

说明:
1 , 2 1, 21,2位置使用魔法,对2 22造成伤害,共斩击1 11次。


示例 2

输入:

10 3 2 2 2 3 1 1 1 2 1 2

输出:

5

说明:
1 , 2 1, 21,2使用魔法,接下来的斩击位置为:

3 4 5 3 4 5 5 6 7 8 9 10 8 9 10

解题思路

本题是贪心 + 前后缀预处理的经典题型。需要在一排怪物中,用“斩击”和一次“魔法”将其全部消灭,求最少斩击次数。斩击可以选择连续1 ∼ 3 1\sim313个位置各造成1 11点伤害;魔法能直接消灭相邻两个位置(或仅一个)。由于魔法只能使用一次,可以将问题拆成左右两个独立部分,分别用贪心求出最少斩击数,再枚举魔法位置取最优。

1. 问题等价转化
2. 算法实现
  1. 输入与初始化
    • 读取n nn和血量数组a,同时复制一份到b用于右侧贪心。
    • n ≤ 2 n \le 2n2,直接输出0(因为魔法或斩击可以全部消灭,但最少斩击次数为0 00,魔法直接消灭两个)。
  2. 左侧贪心(构建pre):
    • 遍历i = 1 → n i = 1 \to ni=1n
      • a[i] > 0,则必须进行a[i]次斩击,覆盖i , i + 1 , i + 2 i, i+1, i+2i,i+1,i+2
        • pre[i] = pre[i-1] + a[i]
        • a[i+1] -= a[i]a[i+2] -= a[i]
      • 否则pre[i] = pre[i-1]
  3. 右侧贪心(构建sur):
    • 遍历i = n → 2 i = n \to 2i=n2(用备份数组b):
      • b[i] > 0,则进行b[i]次斩击,覆盖i , i − 1 , i − 2 i, i-1, i-2i,i1,i2
        • sur[i] = sur[i+1] + b[i]
        • b[i-1] -= b[i]b[i-2] -= b[i]
      • 否则sur[i] = sur[i+1]
  4. 枚举魔法位置
    • 初始答案ans = pre[n](不使用魔法)。
    • 枚举魔法左端点i ii1 ≤ i ≤ n 1 \le i \le n1in,允许仅一个位置):
      • 总斩击数 =pre[i-1] + sur[i+2]
      • 更新ans = min(ans, ...)
  5. 输出ans
3. 复杂度分析

总结

通过贪心分别处理左右两段,将魔法位置作为分割点,利用前缀与后缀的最优斩击数快速计算总代价,避免了复杂的动态规划。贪心的正确性基于“斩击尽量覆盖未处理区域”的直观最优策略。整体思路清晰高效,适用于10 6 10^6106规模的数据。

代码内容

#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=1e9+7;constll MAXN=1000000+100;ll pre[MAXN],sur[MAXN],a[MAXN],b[MAXN];intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll n;scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&a[i]);b[i]=a[i];}if(n<=2){printf("0\n");return0;}for(ll i=1;i<=n;i++){if(a[i]>0){pre[i]=pre[i-1]+a[i];a[i+1]-=a[i];a[i+2]-=a[i];}elsepre[i]=pre[i-1];}for(ll i=n;i>=2;i--){if(b[i]>0){sur[i]=sur[i+1]+b[i];b[i-1]-=b[i];b[i-2]-=b[i];}elsesur[i]=sur[i+1];}ll ans=pre[n];for(ll i=1;i<=n;i++)ans=min(ans,pre[i-1]+sur[i+2]);printf("%lld\n",ans);return0;}
http://www.cnnetsun.cn/news/4344472.html

相关文章:

  • 卷帘门三维建模全流程:SolidWorks参数化设计与运动仿真实战
  • TVA具身智能架构:认知图谱构建与子目标分解推理机制
  • 西门子Variant变量介绍
  • mpx原型工具实战:PX与PT换算及悬浮窗尺寸最佳实践
  • 京东秋招技术通用岗笔试全攻略:题型解析与备考策略
  • 从仿真到硬件:拆解Unitree机器人技术栈与开发实践
  • QAT伪量化
  • Windows下部署OpenClaw:从WSL2到本地大模型的AI代理实战指南
  • 2025阿里云研发岗春招笔试全解析:考察逻辑与备战策略
  • 【原创】基于AI大模型+SpringBoot+Vue的健身房私教预约及会员办理系统(设计与实现)
  • MKVToolNix:无损封装音视频与字幕的终极工具指南
  • 【单片机毕业设计】基于 STM32 或 51 单片机的激光测距参数设置与移动端监控系统设计 基于 STM32 或 51 单片机的 TOF 传感器距离采集预警设备设计与实现(023305)
  • 国防科大操作系统公开课:从进程内存到文件I/O的体系化学习指南
  • 【设计模式精讲】8.原型模式(Prototype)
  • 安卓4老电视没有输入法?从APK安装到ADB的完整解决指南
  • Cesium三维淹没分析:热力图可视化水深分布实践
  • 27届大模型面试准备(七十):大模型推理服务的负载均衡与智能请求路由
  • 0x28通信控制服务测试用例设计:从需求拆解到落地实践
  • 武汉国家开放大学怎么报名?靠谱教育机构怎么选?华祺教育优势详解
  • 基于微信小程序的餐厅预约系统设计与实现源码+文档+讲解视频
  • 深度学习+CNN 深度学习大白菜病害检测系统预测模型完整项目源码+训练脚本+评估指标【AI毕设】
  • Codex多Agent加密:你的AI编程Agent正在变成监察黑洞
  • STM32F103C8T6驱动WS2812B灯带:基于PWM+DMA的完整方案
  • 2026年AI岗位能力要求与工程实践:从RAG到模型部署全解析
  • 工厂必须设置的安全标识有哪些?分别放在什么位置?
  • 一张图彻底看懂5G RF前端:从PA、ET、FEMiD、Duplexer到Antenna Tuner,为什么中间能损失4~5dB?
  • AI生成测试用例实战:提示词工程与结构化输出设计
  • SpringBoot+Vue入校申报审批系统:从设计到部署全解析
  • Zotero AI插件批量生成文献精读笔记实战指南
  • 数据科学家私藏!5个Python冷门库,告别重复劳动,效率翻10倍