HDU 3401 Trade 單調佇列優化dp

2022-05-02 21:45:10 字數 645 閱讀 6805

題目大意:現在要你去**,給你每天的開盤價值,每股**價值為ap,賣出價值為bp,每天最多買as股,最多賣出bs股,並且要求兩次買賣必須間隔w天,問你在t天內如何進行**操作從而獲得最大收益。

解題思路:先吐槽一下,會單調佇列但不會dp不行,會dp但不會單調佇列也不行!!開始dp動態轉移方程倒是寫對了,然後算算時間複雜度t*t*maxp*maxp,優化不得當,一直以為是dp思路錯了,囧。

對於有單調佇列參與dp的題,dp方程必須準確先寫好,然後再觀察可否用單調佇列。

dp[i][j]:表示第i天手上持有j股的最大利益。三種決策:

que[maxn];

1819

intmain()

2045 front=0, tail=-1;46

for(int j=maxp; j>=0; j--)

4753}54

int maxx=0;55

for(int i=0; i<=maxp; i++)

56 maxx=max(maxx,dp[n][i]);

57 printf("

%d\n

",maxx);58}

59return0;

60 }

view code

HDU 3401 Trade 單調佇列優化

題意 第i天 一股的價錢api,賣出一股的價錢bpi,最多 asi股,最多賣出bsi股。兩次操作 或賣出 中間必須相差w天。時間為n。任意時間手中的 不大於maxp。求最大收益。dp i j 代表第i天手上有j股的最大收益,dp i j max dp i 1 j dp i w k j k ap i ...

HDU3401 Trade 單調佇列優化dp

分析可以設定二維的dp狀態i天有j塊錢的最大收益 對w 1天之前的每天進行初始化,因為在這個時候只能買,也可以不買,但是這個不買在後面進行集體操作 之後就有3種情況,一種是買,一種是不操作,一種賣出 並且只有當滿足條件的時候才能進行買賣,那麼這個優化方法就明顯了,不買的情況就是等於前一天這個錢的大小...

hdu 3401 Trade 單調佇列優化dp

題意 lxhgww喜歡 票,他可以在第i天 或者賣出若干張 一天只能買或者賣 兩個交易日之間至少相隔w天,問他t天後最多能賺多少。解題思路 首先我們可以得出的dp狀態是,dp i j 表示第i天有j張 最多能持有多少錢,初始值dp 0 0 0 其餘都為 inf。那麼我們可以得到乙個時間複雜度為o t...