acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 题解

    解题思路 由于解密只能一关关进行,而战斗只需要关卡解密已完成就可进行,因此问题简化为: 选择k关(x1⋅⋅⋅xkx_1 \cdot\cdot\cdot x_kx1 ⋅⋅⋅xk ),求∑i=1kxi\sum_{i=1}^{k} x_i∑i=1k xi 加上xkx_kxk 在解密时间上的前缀和的最小值。 建立前缀和数组sss存储解密时间前缀和,ttt数组用于存储每关的战斗时间(代码中为t_),sumsumsum变量用于存储堆中可能为最优的k关战斗时间和(代码中为sum_),ansansans变量用于储存当前最优解(代码中为ans_)。 先把前k关战斗时间加入sumsumsum变量和优先队列pqpqpq,此时最优解可表示为ans=s[k]+sumans = s[k]+sumans=s[k]+sum。遍历接下来每一关,若其战斗时间小于当前队列中最大战斗时间,则可能成为最优解选择关卡之一,将其与最大时间交换,若新时间的确较原先最优解更优,更新ansansans。 遍历完所有关卡后,ansansans即为最优解。 实际代码

    userId_undefined
    EKM_
    时间刺客空间掌握者时空双修者秩序白银
    23阅读
    2回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页