麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Leetcode 410 - Split Array Largest Sum(dp or 二分答案)

2019-11-14 12:43:42
字體:
來源:轉載
供稿:網友

題意

給定一個數組,將數組劃分m組,要求每組的和的最大值最小

思路

算法1:dp

首先我們這樣考慮:我們要將前n個元素劃分成m段,即先找一個劃分點k,在[k + 1, n]不再劃分。然后將[1, k]劃分成m - 1段。那么就可以得到我們的狀態表示和轉移方程。

狀態表示d[i,j],前i個元素,劃分成j段的最大和。 轉移方程d[i,j]=min{max0≤k<i{d[k,j?1]},∑p=k+1jap} 時間復雜度O(n2m)

算法2:二分

最大值最小問題一般采用二分答案的方法。

我們二分一下我們最后的答案,判斷答案是否合法即可。 判斷數x是否合法:統計一下將數組劃分為最大值≤x時能劃分多少組。如果組數cnt>x,則說明我們答案應該更大,否則,答案可以減小。

代碼

//algorithm 1: dpconst int maxn = 1005;const int maxm = 55;int d[maxn][maxm];class Solution {public: int splitArray(vector<int>& nums, int m) { int n = nums.size(); if (n == 0) return 0; int S[maxn]; S[0] = nums[0]; for (int i = 1; i < n; i++) S[i] = S[i - 1] + nums[i]; for (int i = 0; i < n; i++) d[i][1] = S[i]; for (int j = 2; j <= m; j++) { for (int i = 0; i < n; i++) { d[i][j] = INT_MAX; for (int k = 0; k < i; k++) d[i][j] = min(d[i][j], max(d[k][j - 1], S[i] - S[k])); } } return d[n - 1][m]; }};//algorithm 2: Binary Searchclass Solution {public: bool judge(long long x, int m, vector<int> nums) { int cnt = 0; bool f = false; long long sum = 0; for (int i = 0; i < nums.size(); i++) { if ((long long)nums[i] > x) return false; sum += nums[i]; if (i == nums.size() - 1) { if (sum > x) cnt += 2; else cnt++; } else { if (sum > x) { cnt++; sum = nums[i]; } } } if (cnt > m) return false; return true; } int splitArray(vector<int>& nums, int m) { int n = nums.size(); if (n == 0) return 0; long long sum = nums[0], MIN = nums[0]; for (int i = 1; i < n; i++) {sum += nums[i]; MIN = min(MIN, (long long)nums[i]);} long long L = MIN, R = sum, M = L + (R - L) / 2, res = sum; while (L < R) { if (R == L + 1) { if (judge(L, m, nums)) M = L; else M = R; break; } M = L + (R - L) / 2; if (judge(M, m, nums)) R = M; else L = M; } return M; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产羞羞视频在线观看免费应用 | 日本在线免费观看 | 黄色毛片视频在线观看 | 免费一级特黄做受大片 | 国产精品久久久久久影视 | 国产精品久久久久久久av三级 | 看片一区二区三区 | 免费国产wwwwwww网站 | 在线观看免费精品 | 黄色网址在线免费播放 | 九九视屏| 91成人免费网站 | 成人免费毛片在线观看 | 久久久国产精品视频 | 欧美日韩一区,二区,三区,久久精品 | 日韩电影一区二区三区 | 特片网久久 | 国产在线精品一区二区三区 | 国产一区二区视频网站 | 曰本三级日本三级日本三级 | 免费观看亚洲视频 | 国产精品区一区二区三区 | 久久男人的天堂 | 性高湖久久久久久久久aaaaa | 欧美伦交| h色网站免费观看 | 中文黄色一级片 | 久久99国产精品久久 | av免费在线观看av | 国产精品高潮视频 | av在线播放网址 | 免费黄色在线观看网站 | 欧美色爱综合 | 国产女厕一区二区三区在线视 | 欧美视频在线观看一区 | 成人免费入口 | h视频免费看 | 免费黄色在线观看网站 | 黄色片一区二区 | 日本一道aⅴ不卡免费播放 视屏一区 | 欧美视频一区二区三区 |