首页 > 其他分享 >1402. 做菜顺序(前缀和、公式变形、动态规划、贪心)

1402. 做菜顺序(前缀和、公式变形、动态规划、贪心)

时间:2023-10-22 09:01:32浏览次数:38  
标签:a1 前缀 int satisfaction 做菜 a2 数组 1402 贪心

 

首先本题可以抽象为从原数组中选出一些子数组,并让这些子数组的(i) * a[i]的和最大

解法:

  将原数组从大到小排序

  f[i] = i * a1 + (i-1) * a2 + ...

  f[i-1] = (i-1) * a1 + (i-2)*a2 + ...

  f[i] = f[i - 1] + (a1 + a2 + ....) //加上一个前缀和

class Solution:
    def maxSatisfaction(self, satisfaction: List[int]) -> int:
        f = 0
        satisfaction.sort(reverse=True)
        for s in accumulate(satisfaction):
            if s <= 0:
                break
            f += s
        
        return f

 

标签:a1,前缀,int,satisfaction,做菜,a2,数组,1402,贪心
From: https://www.cnblogs.com/zk6696/p/17779886.html

相关文章

  • 贪心算法实现
    贪心算法顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单......
  • OI 中的贪心
    贪心模型总结区间最大不相交覆盖/会议安排问题Statement有\(n\)场会议要使用会议室,第\(i\)场会议室的开始和结束时间点为\(l_i\)和\(r_i\),不同会议时间不能重叠。求最多能安排的会议场数。Solution考虑将会议按\(r_i\)升序排序。每次枚举到一个会议\(i\),检查当前......
  • 2023-2024-1 20231402《计算机基础与程序设计》第四周学习总结
    2023-2024-120231402《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第4周作业这个作业的目标自学计算机科学概论第4章,第5章,《C语言程序设计》第3章......
  • 克鲁斯卡尔(Kruskal )算法——求最小生成树贪心算法
    克鲁斯卡尔算法是一种用于求解最小生成树问题的贪心算法。最小生成树是一个连通图的生成树,其边的权重之和最小。一、原理克鲁斯卡尔算法的核心思想是按照边的权重从小到大逐渐选择连通图的边,直到所有顶点都被连接为止。在每一步中,选择当前权重最小的边,若该边的两个顶点尚未连接,则......
  • 贪心
    贪心1个维度【生活常识】135.分发糖果classSolution{publicbooleanlemonadeChange(int[]bills){ int[]arr=newint[2]; for(intbill:bills){ if(bill==5){ arr[0]++; }elseif(bill==10){ if(arr[0]>0){ arr[0]--; a......
  • 2023-2024-1 20231402《计算机基础与程序设计》第3周学习总结
    2023-2024-120231402《计算机基础与程序设计》第3周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第3周作业这个作业的目标自学计算机科学概论第2章,第3章,《C语言程序设计》第2章......
  • [学习笔记]反悔贪心
    顾名思义,就是对之前的一些决策进行反悔的贪心。比如你去爬山,你爬到比之前都高的一个点,你就可以认为这是最高的山,再往上爬,爬到了一个更高点,你就可以撤回一条消息反悔,认为这个点才是最高点。接下来看几道例题,理解一下例题例题1P2949[USACO09OPEN]WorkSchedulingG显然......
  • 树上的最大权连通块:一种换根动态规划与贪心算法的结合
    树上的最大权连通块:一种换根动态规划与贪心算法的结合在计算机科学中,树是一种非常特殊的数据结构,不仅因为它们在存储数据时的效率,还因为它们提供了一种非常直观且强大的方式来解决各种问题。今天,我们将探讨一种特殊类型的问题,即在一棵树中找到一个特殊的子集或连通块,该子集中的节......
  • Slime Escape (CF D) (贪心, 双指针最大有效权值单调增长)
     补充:每次操作可以往左或者右走一步 思路:性质:以一边为重点使劲走,然后利用另外一边来给自己权值变大当这边要死了,就把这边回退到最大值,在走另一边,看另一边能到哪,这样每次都可以扩展最大值,于是利用双指针?也不是双指针,就是l,r分别贪心地向左和......
  • leetcode122买卖股票的最佳时机——贪心、动态规划
    题目描述: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。   示例1......