讓人難以想出的動態轉移方程小集

2022-07-18 10:09:12 字數 2386 閱讀 2432

總有一些動態轉移方程讓人很難想,現在先讓我們看幾道題吧。

joi君有n個裝在手機上的掛飾,編號為1...n。 joi君可以將其中的一些裝在手機上。

joi君的掛飾有一些與眾不同——其中的一些掛飾附有可以掛其他掛件的掛鉤。每個掛件要麼直接掛在手機上,要麼掛在其他掛件的掛鉤上。直接掛在手機上的掛件最多有1個。

此外,每個掛件有乙個安裝時會獲得的喜悅值,用乙個整數來表示。如果joi君很討厭某個掛飾,那麼這個掛飾的喜悅值就是乙個負數。

joi君想要最大化所有掛飾的喜悅值之和。注意不必要將所有的掛鉤都掛上掛飾,而且乙個都不掛也是可以的。

第一行乙個整數n,代表掛飾的個數。

接下來n行,第i行(1<=i<=n)有兩個空格分隔的整數ai和bi,表示掛飾i有ai個掛鉤,安裝後會獲得bi的喜悅值。

輸出一行乙個整數,表示手機上連線的掛飾總和的最大值

輸入 #1複製

5

0 42 -2

1 -1

0 10 3

輸出 #1複製

5

1 ≤ n ≤ 2000

0 ≤ ai ≤ n (1≤i≤n)

−10^6 ≤ bi ≤ 10^6 (1≤i≤n)

f[ i ] [ j ]表示前i件物品在有j個掛鉤的情況下的最大價值

因為j-w[i]+1可能是個負數,沒有意義,這時候就要考慮這物品直接掛在手機上即j=1,也就需要我們把j-w[i]和0取最大值保證有意義

所以正解方程為f[i][j]=max(f[i-1][j],f[i-1][max(j-w[i].a,0)+1]+w[i].b);//這裡的a是鉤子,b是價值

注意:這裡的 j 是指剩餘的掛鉤數量。

1 #include 2 #include 3 #include 4 #include 5

6#define maxn 3100

7#define maxx -1000000000

8using

namespace

std;

9int

f[maxn][maxn];

10struct

nodea[maxn];

13bool

cmp(node a,node b)

16int

main()

22 sort(a+1,a+1+n,cmp);

23for(int i = 0; i<= n; i++)

27 f[0][1]=0;28

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

33int maxm=maxx;

34for(int i = 0 ; i<= n; i++)

37 cout<38return0;

39 }

你駕駛著一台帶有鑽頭(初始能力值w)的飛船,按既定路線依次飛過n個星球。

星球籠統的分為2類:資源型和維修型。(p為鑽頭當前能力值)

1.資源型:含礦物質量a[i],若選擇開採,則得到a[i]*p的金錢,之後鑽頭損耗k%,即p=p*(1-0.01k)

2.維修型:維護費用b[i],若選擇維修,則支付b[i]*p的金錢,之後鑽頭修復c%,即p=p*(1+0.01c)

注:維修後鑽頭的能力值可以超過初始值(你可以認為是翻修+公升級)

金錢可以透支。

請作為艦長的你仔細抉擇以最大化收入。

第一行4個整數n,k,c,w。

以下n行,每行2個整數type,x。

type為1則代表其為資源型星球,x為其礦物質含量a[i];

type為2則代表其為維修型星球,x為其維護費用b[i];

乙個實數(保留2位小數),表示最大的收入。

輸入 #1複製

5 50 50 10

1 10

1 20

2 10

2 20

1 30

輸出 #1複製

375.00

【資料範圍】

對於30%的資料 n<=100

另有20%的資料 n<=1000;k=100

對於100%的資料 n<=100000; 0<=k,c,w,a[i],b[i]<=100;保證答案不超過10^9

1 #include 2 #include 3

using

namespace

std;

4int n, f[100005], a[100005];5

double c, k, w, dp[100005];6

intmain()

14 printf("

%.2lf

", dp[1]*w);

15return0;

16 }

freemind的缺憾 難以讓思維收斂

可是,這也是freemind的缺憾所在。往往我在思考乙個問題時,越思考越覺得問題多,我的創意也越來越多 最後結果就是,我幾乎沒有乙個問題 完成 我的思考。很多freemind腦圖,至今還處於半完成狀態。我的思維本身就過於發散,不善於收斂 freemind加強了我思維的發散性,但是沒有乙個好的讓思維收...

讓人費解的動態規劃 最低票價

今天遇到的這道題,我知道要用動態規劃,可就是想不出狀態轉移方程。看了題解,才明白,它倒序求得的。題目鏈結如下 leetcode,最低票價 在乙個火車旅行很受歡迎的國度,你提前一年計劃了一些火車旅行。在接下來的一年裡,你要旅行的日子將以乙個名為 days 的陣列給出。每一項是乙個從 1 到 365 的...

媽媽自私的愛讓孩子難以長大

孩子已經30歲,因為眼睛近視什麼事情也不會做,生活瑣事基本是由家人給予照顧,就是找個物件同樣也是親戚在給張羅,爸爸很早就離開,在媽媽辛苦陪伴下把子女撫養 因為對孩子的愛,孩子從小體弱多病,媽媽也總是讓姐姐多一些照顧,不要難為孩子,即使在大學畢業回家沒有找到工作,媽媽和接近也是一如既往呵護疼愛。在諮詢...