力扣3273.对Bob造成的最少伤害

力扣3273.对Bob造成的最少伤害

  • 贪心

    • 考虑每个敌人对答案的贡献
    • 对于敌人AB:先杀A所受伤害为tA * dA + (tA + tB) * dB
      • 先杀B所受伤害为tB * dB + (tA + tB) * dA
      • 因此如果tA * dB < tB * dA
      • 就先杀A
cpp 复制代码
  class Solution {
  public:
      long long minDamage(int power, vector<int>& damage, vector<int>& health) {
          int n = health.size();
          vector<pair<int,int>> a(n);
          for(int i=0;i<n;i++)
              a[i] = {(health[i] - 1) / power + 1,damage[i]};
              
          //按照公式排序
          ranges::sort(a,[](const auto &p,const auto &q){
              return p.first * q.second < q.first *p.second;
          });
  
          //s记录累积时间
          long long ans = 0,s = 0;
          //对于每个敌人的贡献 = 存活天数 * 伤害
          for(auto &[k,d] : a)
          {
              s += k;
              ans += s * d;
          }
          return ans;
      }
  };
相关推荐
vir028 分钟前
P12155 [蓝桥杯 2025 省 Java B] 消失的蓝宝
java·职场和发展·蓝桥杯
小张成长计划..24 分钟前
【C++】16:模板进阶
c++·算法
AndrewHZ26 分钟前
【图像处理基石】如何使用大模型进行图像处理工作?
图像处理·人工智能·深度学习·算法·llm·stablediffusion·可控性
AndrewHZ29 分钟前
【图像处理基石】图像处理的基础理论体系介绍
图像处理·人工智能·算法·计算机视觉·cv·理论体系
稚辉君.MCA_P8_Java2 小时前
Gemini永久会员 Java实现的暴力递归版本
java·数据结构·算法
冯诺依曼的锦鲤2 小时前
算法练习:差分
c++·学习·算法
有意义3 小时前
栈数据结构全解析:从实现原理到 LeetCode 实战
javascript·算法·编程语言
鹿鹿鹿鹿isNotDefined3 小时前
逐步手写,实现符合 Promise A+ 规范的 Promise
前端·javascript·算法
封奚泽优3 小时前
下降算法(Python实现)
开发语言·python·算法
im_AMBER3 小时前
算法笔记 16 二分搜索算法
c++·笔记·学习·算法