線性dp 美元匯率 洛谷 P1968

2021-09-27 11:16:07 字數 1118 閱讀 6211

題目描述

在以後的若干天裡戴維將學習美元與德國馬克的匯率。編寫程式幫助戴維何時應買或賣馬克或美元,使他從100美元開始,最後能獲得最高可能的價值。

輸入格式

輸入檔案的第一行是乙個自然數n,1≤n≤100,表示戴維學習匯率的天數。

接下來的n行中每行是乙個自然數a,1≤a≤1000。第i+1行的a表示預先知道的第i+1天的平均匯率,在這一天中,戴維既能用100美元買a馬克也能用a馬克購買100美元。

輸出格式

輸出檔案的第一行也是唯一的一行應輸出要求的錢數(單位為美元,保留兩位小數)。

注意:考慮到實數算術運算中進製的誤差,結果在正確結果0.05美元範圍內的被認為是正確的,戴維必須在最後一天結束之前將他的錢都換成美元。

輸入 #1

5

400300

500300

250

輸出 #1

266.67

一道基礎dp題,設dp[i][0]為美元最大收益,dp[i][1]為馬克最大收益;

於是可得出狀態轉移方程

dp[i][0]=max(dp[i-1][0],dp[i-1][1]/a[i]*100);

dp[i][1]=max(dp[i-1][1],dp[i-1][0]*a[i]/100);

**:

#include

using

namespace std;

int a[

110]

;double dp[

110][2

];intmain()

printf

("%.2f\n"

,max

(dp[n][0

],dp[n][1

]/(double

)a[n]

*100))

;return0;

}

P1968 美元匯率 懷疑智商超過海平面

也是一道貪心題,一些計算 然而我卻弄得很複雜 既然我們要的是最後的最大值,那我們為什麼要注意中間的細節呢 記錄每天我們能拿到的最大值,然後輸出,完美結束 include include include using namespace std const int maxn 200 int n doub...

洛谷 P1970 花匠 線性dp

花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h nh1 h2 hn 設當一部分花被移走後,剩下的花的高度依...

洛谷P1970 花匠 線性dp

給出n 1 e5 n leq1e5 n 1e 5個數,滿足對於所有的g2i g2 i 1,g2 i g2 i 1g g g g g2i g2 i 1 g2i g2 i 1 或者g 2i i 1,g2 i i 1g g2 i i 1 g2i i 1 對理解dp是乙個不錯的題,dp重在設計出來的狀態是乙...