leetcode 3075(排序+贪心)

3075: 幸福值最大化的选择方案

为什么一定要按 "从大到小" 的顺序选?

  • 如果值都很大,大家减完 1 都还是正数,顺序不影响;
  • 反之,因为小的会减为 0,晚点选它没损失;但大的如果晚点选,就会被白白减去 1。

本质上,由于存在 max(0,...) 这个 "截断" 机制,越小的值越容易触发 "保底 0"。为了保护总和,我们应该 优先榨取大值的剩余价值,让那些迟早要变成 0的小值去承担减量。

每个孩子被选中时,其贡献是 max(0, 初始值 - 已经过去的轮数);

只能选k个,优先选择较大的。

复制代码
class Solution {
public:
    long long maximumHappinessSum(vector<int>& happiness, int k) {
        long long ans=0;
        int m=0;
        sort(happiness.begin(),happiness.end());
        for(int i=happiness.size()-1;i>=0;i--){
            ans+=happiness[i];
            m++;
            if(m==k) break;
            if(i-1>=0 && happiness[i-1]>0) happiness[i-1]=max(0,happiness[i-1]-m);
        }
        return ans;
    }
};
相关推荐
祖力552 小时前
数据结构的基本概念与单向链表(链表数据类型构造、创建、头插、尾插、头删、尾删)
数据结构·链表
大明者省3 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
白狐_7985 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2585 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
Shell运维手记6 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
杨航 AI6 小时前
O(n log n):线性对数原理拆解 这个是排序算法的黄金复杂度之一。
算法·排序算法
船厂电气自动化ai大模型7 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光7 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
叠层归一研究院8 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡9 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构