国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

HDU 1024 Max Sum Plus Plus

2019-11-08 19:33:41
字體:
來源:轉載
供稿:網友

題意:求m個不相交區間段的和的和的和最大 思路:動態規劃 分析:dp[i][j]表示以a[j]結尾的i個區間段的和的最大和; 狀態轉移方程:dp[i][j]=max(dp[i][j-1]+a[j],dp[i-1][k]+a[j]) dp[i-1][k]=max(dp[i-1][i~n]) 即劃分成i-1個區間分別以(a[i~n])為結尾中的最大值。(當劃分成i個區間的時候前1-i個數字必定在一個區間里) dp[i][j]可以表示為和上一個區間相連即dp[i][j-1]+a[j]或者自己獨立為一個區間即dp[i-1][k]+a[j];

#include<iostream>#include<string>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>#include<cmath>#include<math.h>#include<vector>#include<map>#include<stack>using namespace std;typedef long long ll;#define INF 0x7fffffffint a[1000005];int dp[1000005];int PRe[1000005];int main(){ int n, m; while (scanf("%d %d", &m, &n) != EOF) { int maxx; memset(a, 0, sizeof(a)); memset(dp, 0, sizeof(dp)); memset(pre, 0, sizeof(pre)); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); for (int i = 1; i <= m; i++) { maxx = -INF; for (int j = i; j <= n; j++) { dp[j] = max(dp[j - 1] + a[j], pre[j - 1] + a[j]); pre[j - 1] = maxx;//記錄前面的最大值 maxx = max(dp[j], maxx);//更新到當前的最大值 } } printf("%d/n", maxx); } return 0;}

鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1024


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 缙云县| 徐汇区| 泰宁县| 邵阳市| 阿拉尔市| 闻喜县| 彰化县| 崇州市| 连州市| 巴林右旗| 山西省| 井研县| 峨边| 手游| 岚皋县| 青铜峡市| 木兰县| 高陵县| 通江县| 金塔县| 仁化县| 新田县| 荣昌县| 炎陵县| 乐陵市| 东阳市| 民勤县| 陆川县| 金湖县| 剑川县| 保定市| 县级市| 崇义县| 高碑店市| 肥城市| 晋江市| 津南区| 天祝| 陆丰市| 英山县| 平度市|