1. 题目

我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。
计算我们所能得到的最大分数是多少。

注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。

示例:
输入:
A = [9,1,2,3,9]
K = 3
输出: 20
解释:
A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + 3) / 3 + 9 = 20.
我们也可以把 A 分成[9, 1], [2], [3, 9].
这样的分组得到的分数为 5 + 2 + 6 = 13, 但不是最大值.说明:
1 <= A.length <= 100.
1 <= A[i] <= 10000.
1 <= K <= A.length.
答案误差在 10^-6 内被视为是正确的。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-sum-of-averages
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[i][k] 表示,以 i 结束的时候,切分了k段,所有平均值和的最大值
  • 预先求出前缀和 presum
  • dp[j][k]=max⁡(dp[j][k],dp[i][k−1]+(presum[j]−presum[i])/double(j−i)),i<jdp[j][k] = \max(dp[j][k], dp[i][k-1]+(presum[j]-presum[i])/double(j-i)), i < jdp[j][k]=max(dp[j][k],dp[i][k−1]+(presum[j]−presum[i])/double(j−i)),i<j
class Solution { //C++
public:double largestSumOfAverages(vector<int>& A, int K) {int i, j, k, n = A.size();vector<vector<double>> dp(n,vector<double>(K+1, 0.0));//dp[i][k] 表示,以i结束的时候,切分了k段,所有平均值和的最大值vector<int> presum(A);for(i = 1; i < n; i++) presum[i] += presum[i-1];for(i = 0; i <= n-K; ++i)dp[i][1] = presum[i]/double(i+1);//初始化,切1段出来的平均值for(k = 2; k <= K; ++k){    //第k段for(j = k-1; j < n-(K-k); ++j){  //j 在第k段可能的范围for(i = j-1; i >= 0; --i){    //遍历小于 j 的所有 idp[j][k] = max(dp[j][k], dp[i][k-1]+(presum[j]-presum[i])/double(j-i));}}}return dp[n-1][K];}
};

16 ms 8.3 MB

python3 解答

class Solution:# py3def largestSumOfAverages(self, A: List[int], K: int) -> float:n = len(A)dp = [[0.0]*(K+1) for _ in range(n)]for i in range(1,n):A[i] += A[i-1]for i in range(n-K+1):dp[i][1] = A[i]/(i+1)for k in range(2, K+1):for j in range(k-1, n-(K-k)):for i in range(j):dp[j][k] = max(dp[j][k], dp[i][k-1]+(A[j]-A[i])/(j-i))return dp[n-1][K]

232 ms 13.8 MB

LeetCode 813. 最大平均值和的分组(DP)相关推荐

  1. leetcode - 813. 最大平均值和的分组

    813. 最大平均值和的分组 -------------------------------------------- 们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平 ...

  2. leetcode 813. Largest Sum of Averages | 813. 最大平均值和的分组(暴力递归->傻缓存->DP)

    题目 https://leetcode.com/problems/largest-sum-of-averages/ 题解 好久不 dp 了,来一道快乐的 dp 保持手感. 经典的暴力递归 -> ...

  3. LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...

  4. leetcode算法题--最大平均值和的分组★

    原题链接:https://leetcode-cn.com/problems/largest-sum-of-averages/ 动态规划 dp[i][k]表示A[:i]的k个组的和 状态转移: dp[i ...

  5. LeetCode简单题之较大分组的位置

    题目 在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组. 例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", &q ...

  6. LeetCode简单题之卡牌分组

    题目 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X ...

  7. HDU 1712 裸分组dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1712 N门课M天复习,第i门课花费j天获得的效益是dp[i][j] 求最大效益 分组背包,同一门课不能选两次 三 ...

  8. LeetCode 664. 奇怪的打印机(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 有台奇怪的打印机有以下两个特殊要求: 打印机每次只能打印由 同一个字符 组成的序列. 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符. ...

  9. LeetCode 1824. 最少侧跳次数(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n + 1 个 点 ,编号为 0 到 n . 一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n ...

最新文章

  1. Go 学习笔记(42)— Go 标准库之 os/user(获取Uid、Gid、Username、Name、HomeDir、查询用户、查询用户组)
  2. pathview包绘制富集的kegg图
  3. 【DP】【树状数组】免费馅饼(luogu 7302/金牌导航 数据结构优化DP-4)
  4. 使用Cygwin实现vlc 1.0.5的wince移植
  5. django-模型类操作-初期阶段-小结
  6. mysql phpmyadmin 安装_phpmyadmin怎么安装
  7. 《编码规范和测试方法——C/C++版》作业 ·004——设计一个顺序表
  8. ModelAndView
  9. 记录一下unity 加载外部视频
  10. 全排列算法(字典序法、SJT Algorithm 、Heap‘s Algorithm)
  11. threejs基于vue加载模型,让模型开启自动旋转 模型位置改变
  12. 36艺教育完成3000万元Pre-A轮融资,星火资本投资
  13. 游戏服务器租用配置选择攻略(大型端游及中小型网页游戏选型)
  14. 便利蜂被指借考试裁员 创始人:体面生活靠奋斗不是靠躺地打滚
  15. 美团商家的数据指标体系是怎么做的?
  16. 【跨平台编程工具】XERO CODER 4.2.8.0 For x86 Cracked By PiaoYun/P.Y.G 优雅破解
  17. 【转】FAL_CLIENT和FAL_SERVER参数详解
  18. MATLAB里面size什么意思,matlab中的makersize是什么意思
  19. 区块链思维—系统性思维
  20. 经典技术形态之--“五弯十”战法图解

热门文章

  1. 在Mysql中显示所有用户的操作教程(Linux环境下)
  2. 特别慢_背什么都特别慢,该怎么提高记忆力?
  3. 华为手机怎么强制关机_华为忘记锁屏密码怎么办?多品牌手机通用解锁密码
  4. 莒南机器人_莒南42项重点建设项目公布!一定有你关注的
  5. linux pmap was java,jvm 《九》pmap linux 命令介绍 及使用
  6. Spring 事务与脏读、不可重复读、幻读
  7. BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】
  8. Vim直接打开Tampermonkey网址的方法。
  9. HBase学习笔记——概念及原理
  10. IOS的 testflight测试设置