刷題向》DP》關於基礎DP easy

2022-06-04 22:03:16 字數 697 閱讀 9266

openjudge  8464

這道題其實很簡單,算是dp的基礎題,比較適合開拓dp思維。

題目比較有欺騙性,其實稍微想想就可以解決,因為題意說第一次賣出後才能**,所以我們可以考慮列舉斷點,所以題目一下變得簡單,我們線性掃兩遍,算最大值就好了。

具體為:

由於不能同時進行兩次交易,所以列舉斷點,一遍掃做1到n的前n個的最大值,由於最大值一定是單調遞增的,所以每次讀入新的a[i],判斷是否有更優解就好了,同理,一遍掃n到1的後n個的最大值,做同樣的事,然後列舉斷點取最大值。

**如下:

1 #include2

int t,n,a[100100],f[100100],g[100100

],ans;

3int

main()

420 best=-2147483647,temp=-2147483647;21

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

2229

for(int i=1;i<=n;i++)

30if(f[i]+g[i]>ans)ans=f[i]+g[i];

31 printf("

%d\n

",ans);

32 ans=0;33

}34return0;

35 }

view code

刷題列表(DP)

洛谷 p2051 ahoi2009 中國象棋 p1879 usaco06nov 玉公尺田corn fields 狀壓 p1850 換教室 概率 p2831 憤怒的小鳥 p1099 樹網的核 這應該不算dp吧 p1131 zjoi2007 時態同步 先把一顆子樹全部換成最大值,則對節點i的所有兒子v,...

學習筆記(DP) 刷題日記

貪心的思想,從右往左把每列都取完或剩下乙個 取餘2 觀察畫圖可以發現,若剩下乙個的兩列之間間隔列數為偶數的話,是可以通過最底下一行使得這兩列剩下的那乙個合併使得貢獻加1。include define ll long long define endl n using namespace std con...

PAT基礎題刷題筆記

新生初學python,但是不練習就不會熟練,於是找到了pat乙級基礎題來鍛鍊一下自己的能力,將程式設計通過的 分享出來,希望各位大神能提出寶貴意見,謝謝!卡拉茲 callatz 猜想 對任何乙個正整數 n,如果它是偶數,那麼把它砍掉一半 如果它是奇數,那麼把 3n 1 砍掉一半。這樣一直反覆砍下去,...