zoukankan      html  css  js  c++  java
  • 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];
        }
    };
  • 相关阅读:
    053(四十四)
    053(四十三)
    053(四十二)
    053(四十一)
    053(四十)
    053(三十九)
    053(三十八)
    053(三十七)
    053(三十六)
    【leetcode❤python】231. Power of Two
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/8978410.html
Copyright © 2011-2022 走看看