力扣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;
      }
  };
相关推荐
测试杂货铺4 分钟前
Jmeter压测实战:Jmeter二次开发之自定义函数
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
是小胡嘛16 分钟前
数据结构之旅:红黑树如何驱动 Set 和 Map
数据结构·算法
m0_7482550219 分钟前
前端常用算法集合
前端·算法
呆呆的猫42 分钟前
【LeetCode】227、基本计算器 II
算法·leetcode·职场和发展
Tisfy44 分钟前
LeetCode 1705.吃苹果的最大数目:贪心(优先队列) - 清晰题解
算法·leetcode·优先队列·贪心·
余额不足121381 小时前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
测试老哥1 小时前
外包干了两年,技术退步明显。。。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
火星机器人life3 小时前
基于ceres优化的3d激光雷达开源算法
算法·3d
虽千万人 吾往矣3 小时前
golang LeetCode 热题 100(动态规划)-更新中
算法·leetcode·动态规划
arnold664 小时前
华为OD E卷(100分)34-转盘寿司
算法·华为od