單行dp複習hdu1087

2021-07-03 15:11:34 字數 627 閱讀 3140

我寫的想法是每乙個dp【i】都是前dp【i】的最大值

dp【i】就等於前所有dp【0。。。i-1】的最大值加上dp【i】

最大值是乙個中間變數

最大值得選取條件就是序列的值大小都是遞增的,也就是a[i]>a[前面的]

#include#include#includeusing namespace std;

typedef long long ll;

ll a[1000+100];

ll dp[1100];

int main()

printf("%lld\n",maxx);

}return 0;

}

看了別人的**,也就是把我寫的x中間變數變成了b[i]

求dp【i】的時候b【i】是沒用的,可以用來存中間值

就省了點**,原理是一樣的

#include#include#includeusing namespace std;

int a[1100],b[1100];

int main()

}printf("%d\n",maxx);

}return 0;

}

HDU1087(最長上公升子串行DP)

解題思路 i j 時 dp i max dp j a i a i 記錄儲存最大的dp i 值即可。dp i 代表從1到 i 的最大上公升子串行的和,裡層迴圈為dp i 做更新,尋找1到 i 區間內的最大上公升子串行和,從而使得其具有區域性最優子結構。完整 include include includ...

HDU 1087 求最長遞增子串行的和 DP

題意 這個樣例很誤導人啊,這個題意呢,就是從起點跳到終點,保持遞增跳而且得分最大。注意,起點和終點是不計分的 解析 模板改一下就好了,之前求的是序列長度。這裡求和,那麼只要把dp初始化a 依然還是 每個數選還是不選的問題。轉移方程 if a i a j dp i max dp i dp j a i ...

最大連續序列值(hdu 1087)

題意 輸入乙個長度為n的序列,該序列不一定從小到大排列,但是我們經過的路徑必須從小到大,如果後面的數大於前面的數則終止路徑,最後輸出最大的連續序列值。分析 這是dp的乙個基礎題,我們首先要用value陣列儲存乙個序列,然後用dp陣列儲存目前為止最大的連續序列值,且dp陣列和最終最大值均初始化為序列第...