DP 2479解題報告

2021-05-25 21:26:05 字數 814 閱讀 8571

考查點:動態規劃

思路:題目的意思實質是要從乙個包含n個整數的集合中選取兩個不相交的子集,在選取的所有方案中,找出兩個子集和的最大值。為此,可以對輸入陣列進行兩個方向的掃瞄。在正向掃瞄時,進行一次0(n)的dp,用dp1[i]表示前i個數中連續和的最大值,反相掃瞄類似。最後從k=0到k=n-2進行遍歷,找出max(dp1[k]+dp2[k+1])。

提交情況:一開始是ac,但是由於使用new,記憶體使用太多,改掉了new,wa。原因是k的取值範圍問題。

收穫:使用new雖然記憶體使用更精確,但是由於存在多組測試資料,反而會使得記憶體使用率大幅上公升,一定程度上影響時間。學習了如何在有負數的陣列中,求最大連續和。

參考方案:

code:

#include 

using

namespace std;   

int a[50001],dp1[50001],dp2[50001];   

int main()   

dp1[i]=maxsum;   

if(sum<0)   

sum=0;   

}   

sum=0;   

maxsum=-int_max;   

for(int i=n-1;i>=0;i--)   

dp2[i]=maxsum;   

if(sum<0)   

sum=0;   

}   

int result=-int_max;   

for(int i=0;i   

cout<}   

return 0;   

}  

7 18 DP考試解題報告

今天的考試真的是天崩地裂,寫了的三個題全炸。然而誰叫我弱 不注意細節呢?真的要扇耳光。t1 題意 一段區間的高度為這個區間中高度的最小值,給定n個寬度,求每個寬度的期望高度 40 算出長度為x的區間的所有的最小值的取值的和,除以總的方案數 n x 1 用st表預處理可以n 2 記得開long lon...

整數劃分解題報告(DP方法)

1.問題描述 給定乙個正整數n和k 1.將n劃分成若干正整數之和的劃分數。2.將n劃分成k個正整數之和的劃分數。3.將n劃分成最大數不超過k的劃分數。4.將n劃分成若干奇正整數之和的劃分數。5.將n劃分成若干不同整數之和的劃分數。2.問題分類 總的來說這些都是揹包問題 第乙個問 就是乙個完全揹包,揹...

HDU 3652 數字DP 解題報告

b number problem description a wqb number,or b number for short,is a non negative integer whose decimal form contains the sub string 13 and can be div...