813. Largest Sum of Averages

813. Largest Sum of Averages

class Solution {
public:
    double largestSumOfAverages(vector<int>& A, int K) {
        int n = A.size();
        
        // dp[k][i]: largestSumOfAverages of [0,i] with up to k partitions
        // dp[0][i]: largestSumOfAverages of [0,i] with 0 partition = (sums[i+1]-sums[0])/(i+1)
        // dp[k][i]: max(dp[k-1][j] + (sums[i+1]-sums[j+1]) / (i-j), dp[k-1][i])
        vector<vector<double>> dp(K, vector<double>(n, 0));
        
        vector<double> sums(n+1, 0);
        for (int i = 0; i < A.size(); i++)
            sums[i+1] = sums[i] + A[i];
        
        for (int i = 0; i < n; i++)
            dp[0][i] = (sums[i+1] - sums[0]) / (i+1);  // single partition
        for (int k = 1; k < K; k++) {
            for (int i = 0; i < n; i++) {
                dp[k][i] = dp[k-1][i];
                for (int j = 0; j < i; j++) {
                    dp[k][i] = max(dp[k][i], dp[k-1][j] + (sums[i+1]-sums[j+1]) / (i-j));
                }
            }
        }
        
        return dp[K-1][n-1];
    }
};

 

转载于:https://www.cnblogs.com/JTechRoad/p/8978410.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101688.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在线名片设计_diy名片代码在线生成

    在线名片设计_diy名片代码在线生成小小名片,看似简单,它要经过以下八道工序才能到你手中。其间你还得参与名片制作的前期工作,你要对名片印刷方式、印刷难易、印刷用纸选择;你还得提供名片的具体内容,设计大致思路;大多数时间你还得要校稿,特别是要求较高的复杂的名片,商家都有如此请求。名片后期加工也较复杂,需要专业设备和熟练的操作人员。以往,我们得亲自前往名片印刷店印刷,一盒名片也许要去好多趟,好在有了互联网,现在简单了。你大可一边喝着咖啡…

    2025年7月25日
    2
  • datax(26):各个数据库与datax字段映射

    datax(26):各个数据库与datax字段映射通过源码解读Column-datax中的数据类型,可以知道datax框架中只有7(enumType种)种数据类型,那么各个数据库的字段是如何和datax的字段进行相互映射?一、ADBPGDataX内部类型ADBPG数据类型Longbigint,bigserial,integer,smallint,serialDoubledoubleprecision,float,numeric,realStringvarchar,char,tex.

    2022年5月16日
    171
  • c语言 银行家算法(完整代码实现)

    c语言 银行家算法(完整代码实现)银行家算法例子:T0时刻进程P1提出需要(1、0、2)个资源的请求T0时刻进程P4提出需要(3、3、0)个资源的请求T0时刻进程P0提出需要(0、2、0)个资源的请求全局变量:intMax[5][3]={7,5,3,3,2,2,9,0,2,2,2,2,4,3,3};//五个进程对各种资源的最大需求intAllocation[5][3]={0,1,0,2,0,0,3,0,2,2,1,1,0,0,2};//五个进程已分配的各种资源数目intNeed[5][3]={7,4,3

    2022年5月7日
    59
  • 微信自动回复机器人使用教程[通俗易懂]

    微信自动回复机器人使用教程[通俗易懂]第一步,打开软件,选择关键词回复一栏第二步:单击鼠标右键选择添加一个词,设置好关键词,回复词,选择回复到哪个微信群即可。第三步:测试一下效果第四步:操作就是这么简单,效果很明显。完美通过…

    2022年10月1日
    2
  • 为什么0xffffffff是-1?(计算机对整型的存储)[通俗易懂]

    为什么0xffffffff是-1?(计算机对整型的存储)[通俗易懂]一个数字在计算机中都是以二进制补码的形式存储的。先了解这句核心。。。我们认为中的int整型数值顺序java中int类型是4个字节,也就是32位,其中第一位是符号位,int数值的存储结构我们利用System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));拿到int的最大值,是1111111111111111111111111111111,31个1,首位是0(代表正数,省略了)那我们给int的最大值+1,会发生什么呢?Sys

    2022年5月13日
    48
  • 6个技巧,让你十年前的老电脑流畅起来。

    6个技巧,让你十年前的老电脑流畅起来。电脑越来的越久,运行速度就会越慢,如何让老旧的电脑重新快起来呢?以下6个技巧,请收好了。1、换Win10系统俗话说,重装系统能解决90%的问题。此话不假,对于一些卡的不行的电脑这一招是最有效的。Windows10系统,1GHz的CPU、1GB内存、16GB硬盘就能流畅的运行,即便是十年前的电脑也能流畅运行。还在抱着XP系统的用户,不妨试一试,XP已然不是最好的系统了,虽然十年前…

    2022年6月12日
    336

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号