力扣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;
      }
  };
相关推荐
算AI14 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
hyshhhh16 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
杉之17 小时前
选择排序笔记
java·算法·排序算法
Naive_717 小时前
蓝桥杯准备(前缀和差分)
java·职场和发展·蓝桥杯
烂蜻蜓17 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
OYangxf17 小时前
图论----拓扑排序
算法·图论
我要昵称干什么17 小时前
基于S函数的simulink仿真
人工智能·算法
AndrewHZ17 小时前
【图像处理基石】什么是tone mapping?
图像处理·人工智能·算法·计算机视觉·hdr
念九_ysl17 小时前
基数排序算法解析与TypeScript实现
前端·算法·typescript·排序算法
守正出琦17 小时前
日期类的实现
数据结构·c++·算法