码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode.813 最大平均值和的分组 - 前缀和 + dp


    ​​​​​​813. 最大平均值和的分组

    思路:

    一个简单的数学结论:

    划分份数越多,平均值之和越大,因此想要取得最大值必然是恰好划分成 k 份

    • 用 dp[i][j]" role="presentation">dp[i][j]dp[i][j] 表示 前i个元素划分成j份的最大平均和,则答案就是 dp[n][k]" role="presentation">dp[n][k]dp[n][k]
    • 当 j=1" role="presentation">j=1j=1 时,dp[i][j]" role="presentation">dp[i][j]dp[i][j] 就是 [0,i−1]" role="presentation">[0,i−1][0,i−1] 元素的平均值
    • 当 j>1" role="presentation">j>1j>1 时,我们可以把区间 [0,i−1]" role="presentation">[0,i−1][0,i−1] 划分成 [0,x−1]" role="presentation">[0,x−1][0,x−1] 和 [x,i−1]" role="presentation">[x,i−1][x,i−1] 两部分,dp[i][j]" role="presentation">dp[i][j]dp[i][j] 等于所有这些合法的切分方式的平均值和的最大值
    • 所以状态转移方程就是
    • dp[i][j]=max(dp[i][j],dp[x][j-1]+(s[i]-s[x])/(i-x));

    其中 dp[x][j - 1] + (s[i] - s[x]) / (i - x) 表示为 x 位置 之前的最大值分组和 + 当前位置平均值

    1. class Solution {
    2. public:
    3. double largestSumOfAverages(vector<int>& nums, int k)
    4. {
    5. int n = nums.size();
    6. vector<double> s(n+1);
    7. for(int i=0;i1]=s[i]+nums[i];
    8. vectordouble>> dp(n+1,vector<double>(k+1));
    9. for(int i=1;i<=n;i++) dp[i][1]=s[i]/i;
    10. for(int j=2;j<=k;j++) //枚举分组数
    11. for(int i=j;i<=n;i++) //枚举分组元素
    12. for(int x=j-1;x//枚举分割位置
    13. dp[i][j]=max(dp[i][j],dp[x][j-1]+(s[i]-s[x])/(i-x));
    14. return dp[n][k];
    15. }
    16. };

  • 相关阅读:
    【手写算法实现】 之 KNN K近邻算法
    (文末赠书)我为什么推荐应该人手一本《人月神话》
    Allegro如何制作routekeepin操作指导
    C# 超链接 LinkLabel 类 控件
    八大基本排序(详解)
    网易云信智码超清转码技术实践
    SpringBoot之整合WebSocket服务并兼容IE8浏览器的方式
    牛客网 -- WY28 跳石板
    【JAVA学习笔记】67 - 坦克大战1.5 - 1.6,防止重叠,记录成绩,选择是否开新游戏或上局游戏,播放游戏音乐
    基于ESP8266远程舵机的控制与实现
  • 原文地址:https://blog.csdn.net/weixin_61639349/article/details/128076781
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号