HDU - 1024 Max Sum Plus Plus 最大m段子段和+滾動數組優化

給定n個數字,求其中m段的最大值(段與段之間不用連續,但是一段中要連續)

例如:2 5?1 -2 2 3 -1五個數字中選2個,選擇1和2 3這兩段。

dp[i][j]從前j個數字中選擇i段,然后根據第j個數字是否獨立成一段,可以寫出

狀態轉移方程:dp[i][j]=max(dp[i][j-1]+num[j],max(dp[i-1][k])+num[j])

這里的max(dp[i-1][k])代表的擁有i-1段時的最大值,然后再加上num[j]獨立成的一段。

但是題目中沒有給出m的取值范圍,有可能爆內存和爆時,都需要處理一下。

對于防爆內存:注意到dp[i][*]只和dp[i][*],dp[i-1][*],即當前狀態只和前一狀態有關,可以用滾動數組優化(資料)。

對于防爆時:既然max(dp[i-1][k])代表的擁有i-1段時的最大值,我們可以用一個數組pre儲存之前的最大值

狀態轉移方程:dp[i][j]=max(dp[i][j-1]+num[j],pre[j-1]+num[j])發現不關i什么事,于是乎

最后的狀態轉移方程:dp[j]=max(dp[j-1]+num[j],pre[j-1]+num[j])

#include <iostream>
#include <algorithm>
using namespace std;const int N=1000010;
const int INF=0x3f3f3f3f;
int num[N],pre[N],dp[N];int main(){int n,m;while(scanf("%d %d",&m,&n)!=EOF){for(int i=1;i<=n;i++) scanf("%d",&num[i]),dp[i]=0,pre[i]=0;int MAX;dp[0]=pre[0]=0;for(int i=1;i<=m;i++){MAX=-INF;for(int j=i;j<=n;j++){//這里以i開始,因為最少要i個數字才能支撐i段dp[j]=max(dp[j-1]+num[j],pre[j-1]+num[j]);pre[j-1]=MAX;MAX=max(MAX,dp[j]);}}printf("%d\n",MAX);    } return 0;
}

?

轉載于:https://www.cnblogs.com/Aragaki/p/7518313.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371217.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaFX教程–基礎

JavaFX似乎正在RIA領域獲得發展。 有了正確的工具和開發支持&#xff0c;它肯定會在下一個最佳技術“物”上付出巨大的代價。 我沒有在這里寫任何JavaFX評論&#xff0c;因為有很多技術評論可能對它進行了廣泛的評論&#xff0c;但是&#xff0c;我將編寫一個簡單的教程&#x…

java script this_JavaScript this 關鍵字

JavaScript this 關鍵字面向對象語言中 this 表示當前對象的一個引用。但在 JavaScript 中 this 不是固定不變的&#xff0c;它會隨著執行環境的改變而改變。在方法中&#xff0c;this 表示該方法所屬的對象。如果單獨使用&#xff0c;this 表示全局對象。在函數中&#xff0c;…

trim函數的作用 $.trim(str)

去掉字符序列左邊和右邊的空格轉載于:https://www.cnblogs.com/dandeliongogo/p/6610890.html

php數據庫備份腳本

// 備份數據庫 $host "localhost"; $user "root"; //數據庫賬號 $password ""; //數據庫密碼 $dbname "mysql"; //數據庫名稱 // 這里的賬號、密碼、名稱都是從頁面傳過來的 if (!mysql_connect($host, $user, $password)) // 連接…

java swing 案例詳解_《Java Swing圖形界面開發與案例詳解》PDF_IT教程網

資源名稱&#xff1a;《Java Swing圖形界面開發與案例詳解》PDF內容簡介&#xff1a;《Java Swing圖形界面開發與案例詳解》全書共20章&#xff0c;其中第1&#xff5e;2章主要介紹有關Swing的基礎知識&#xff0c;包括Swing的基本概述、如何使用IDE開發Swing程序&#xff1b;第…

水晶球錯覺

我注意到人們有時會避免進行徹底的測試。 對于某些人來說&#xff0c;這聽起來像是偽造的&#xff0c;但是請聽我說……我確實理解為什么會這樣。 測試會產生被困的感覺&#xff0c;每引入一個新的測試&#xff0c;負擔就會加重。 建立穩定&#xff0c;無干擾且質量保證的測試套…

Python—day3

1、字符串在C里邊就是字符數組 Python里邊一切事物都是對象&#xff0c;對象則是類創建的 2、set集合 set是一個無序且不能重復的元素集合 #!/usr/bin/env python# encoding: utf-8#set對象不能有重復s1 set()s1.add(alex)print(s1)s1.add(alex)print(s1)s1.add(shidong)print…

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

當引入第三方的框架的時候 容易產生以下問題&#xff1a; The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如圖&#xff1a; 造成的原因&#xff1a; info文件中的字段Executable file 與 build settings欄中的Packaging中的Produc…

Google Guava v07范例

我們在TouK舉辦了一個名為“每周技術研討會”的活動&#xff0c;即每個星期五的16:00&#xff0c;每個愿意參加的人都有一個演講。 我們展示了我們在家學習和學習的東西&#xff0c;但是我們也設有一個公告板&#xff0c;上面有人們想聽的話題。 上周MaciejPrchniak談論了Cloju…

推薦一些經過實踐檢驗的學習方法

作者做了多年的Java培訓教師&#xff0c;也接觸過不少初學者&#xff0c;根據多年的教學互動經驗&#xff0c;總結了一些能少走彎路的學習方法&#xff0c;供大家參考。 第一&#xff0c;是要多學多練&#xff0c;這似乎是廢話&#xff0c;但真正能非常上心學習的人還真是少數&…

使JFrame透明

首先創建一個帶有滑塊的框架&#xff0c;該滑塊將用于設置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作業之成員介紹

Lab205的新鮮血液 很理所當然的&#xff0c;實驗室的4枚“小鮮肉”在現代軟工的課程上組成了一個team&#xff0c;作為一個負責的team長&#xff0c;我當然要放上組員們的自述啦&#xff01;&#xff08;為什么不是他述&#xff0c;╭(╯^╰)╮&#xff0c;誰讓我是個傲嬌的組長…

java自定義分頁標簽_自定義分頁標簽--仿javaeye分頁效果

效果如圖&#xff1a;1、JSP規范1.1版本后增加了自定義標簽庫。實現自定義標簽的步驟(1)開發自定義標簽處理類。(2)建立*.tld文件。(3)在web.xml中增加自定義標簽的定義。(4)在jsp中使用自定義標簽。2、自定義標簽類(1)繼承javax.servlet.jsp.tagext.TagSupport(2)標簽類屬性&a…

Java隱藏代碼

不久前&#xff0c;我遇到了字符串中不可見字符的問題。 因為它們是不可見的&#xff0c;所以它們確實會引起混亂。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序設計》第5周學習總結

1. 本周學習總結 1.1 嘗試使用思維導圖總結有關多態與接口的知識點。 1.2 可選&#xff1a;使用常規方法總結其他上課內容。 學習了更多markdown的知識 參考資料: 百度腦圖 XMind 2. 書面作業 作業參考文件下載 1.代碼閱讀&#xff1a;Child壓縮包內源代碼package parent;publi…

Deepin安裝Curl的方法

Deepin安裝Curl的方法 以Deepin為例&#xff0c;只需一條命令即可&#xff1a; sudo apt-get install curl libcurl3 libcurl3-dev php5-curlposted on 2017-09-15 23:22 MissA-VeryGood 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/MissA-VerGood/p/752911…

亞信聯創java面試題_亞信聯創面試題及答案

1. Vector & ArrayList1) Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe)&#xff0c;而ArrayList的方法不是&#xff0c;由于線程的同步必然要影響性能&#xff0c;因此,ArrayList的性能比Vector好。2) 當Vector或ArrayList中的元素超過它的初始大小時,…

HTTP協議之http狀態碼詳解

什么是HTTP狀態碼 HTTP狀態碼的作用是&#xff1a;Web服務器用來告訴客戶端&#xff0c;發生了什么事。 狀態碼位于HTTP Response 的第一行中&#xff0c;會返回一個”三位數字的狀態碼“和一個“狀態消息”。 ”三位數字的狀態碼“便于程序進行處理&#xff0c; “狀態消息”更…

有用的Ant構建標簽

問題&#xff1a; 如何在ant文件中執行以下任務&#xff1f; 制作zip文件。 運行命令。 將文件復制到遠程計算機。 在遠程Linux機器上運行命令。 打開輸入框并響應輸入值。 撥打螞蟻電話。 答案&#xff1a; 1.制作zip文件&#xff1a; 以下是在ant中制作zip文件的xml…

poj-2955-Brackets-區間DP

poj-2955-Brackets-區間DP BracketsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9014 Accepted: 4829Description We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a regular brackets sequence,if s …