sweetness

[leetcode] 1231 Divide Chocolate

冷暖自知 提交于 2019-12-02 11:15:00
https://leetcode.com/contest/biweekly-contest-11/problems/divide-chocolate/ 这道题的题目意思就是,一个巧克力有n格,每个格子有不同的甜度,将巧克力切k次,选择甜度最低的那块,问怎么切能够使得甜度最低的那块巧克力甜度最大。 比赛的时候第一反应这里有一个很明显的递推关系:从切k-1块到切k块,从k-1加上连续的1~n格就能得到下一个状态,于是很快就得到了一个超时的n3 dp: class Solution { public: int n; int maximizeSweetness(vector<int>& sweetness, int K) { n = sweetness.size(); vector<vector<int>> dp(n, vector<int>(K + 5, 0)); for(int i = 0;i < n;i++) { if(i == 0) dp[i][0] = sweetness[i]; else dp[i][0] = sweetness[i] + dp[i - 1][0]; } for(int k = 1;k <= K; k++) { for(int i = 0;i < n; i++) { int sum = 0; for(int j = i + 1;j < n;j++) { sum