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

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

  • 贪心

    • 考虑每个敌人对答案的贡献
    • 对于敌人AB:先杀A所受伤害为t~A~ * d~A~ + (t~A~ + t~B~) * d~B~
      • 先杀B所受伤害为t~B~ * d~B~ + (t~A~ + t~B~) * d~A~
      • 因此如果t~A~ * d~B~ < t~B~ * d~A~
      • 就先杀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;
      }
  };
相关推荐
yannan20190313几秒前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法3 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR3 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer4 分钟前
快乐数算法
算法·leetcode·职场和发展
小芒果_015 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
qq_434085907 分钟前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法
Beau_Will7 分钟前
ZISUOJ 2024算法基础公选课练习一(2)
算法
XuanRanDev10 分钟前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
gkdpjj11 分钟前
C++优选算法十 哈希表
c++·算法·散列表
代码猪猪傻瓜coding11 分钟前
力扣1 两数之和
数据结构·算法·leetcode