投資的最大效益(洛谷)

2021-10-09 22:59:29 字數 1395 閱讀 7697

題目背景

約翰先生獲得了一大筆遺產,他暫時還用不上這一筆錢,他決定進行投資以獲得更大的效益。

銀行工作人員向他提供了多種債券,每一種債券都能在固定的投資後,提供穩定的年利息。

當然,每一種債券的投資額是不同的,一般來說,投資越大,收益也越大,

而且,每一年還可以根據資金總額的增加,更換收益更大的債券。

題目描述

例如:有如下兩種不同的債券:①投資額 4000,年利息 400;②投資額 3000,年利息 250。

初始時,有 10000 的總資產,可以投資兩份債券①債券,一年獲得 800 的利息;

而投資乙份債券①和兩份債券②,一年可獲得 900 的利息,兩年後,可獲得 1800 的利息;

而所有的資產達到 11800,然後將賣掉乙份債券②,換購債券①,年利息可達到 1050;

第三年後,總資產達到 12850,可以購買三份債券①,年利息可達到 1200,第四年後,總資產可達到 $14050。

現給定若干種債券、最初的總資產,幫助約翰先生計算,經過 n 年的投資,總資產的最大值。

輸入格式

第一行為三個正整數 s, n, d,分別表示最初的總資產、年數和債券的種類。

接下來 d 行,每行表示一種債券,兩個正整數 a, b 分別表示債券的投資額和年利息。

輸出格式

僅乙個整數,表示 n 年後的最大總資產。

輸入樣例

10000 4 2

4000 400

3000 250

輸出樣例

14050

說明/提示

s ≤ 106,n ≤ 40,d ≤ 10,a ≤ 104,且 a 是 1000 的倍數,b 不超過 a 的 10%。

題解

完全揹包(優化2.0):

由於 a 是 1000 的倍數,所以將 a, s 除以 1000 可以達到節省空間與加快執行速度的效果。

#include

using

namespace std;

const

int n =

10, m =

1e8;

int s, n, d;

int a[n]

, b[n]

, f[m]

;int

main()

while

(n --)

cout << s << endl;

return0;

}

Luogu 1853 投資的最大效益

題目背景 約翰先生獲得了一大筆遺產,他暫時還用不上這一筆錢,他決定進行投資以獲得更大的效益。銀行工作人員向他提供了多種債券,每一種債券都能在固定的投資後,提供穩定的年利息。當然,每一種債券的投資額是不同的,一般來說,投資越大,收益也越大,而且,每一年還可以根據資金總額的增加,更換收益更大的債券。題目...

P1853 投資的最大效益

約翰先生獲得了一大筆遺產,他暫時還用不上這一筆錢,他決定進行投資以獲得更大的效益。銀行工作人員向他提供了多種債券,每一種債券都能在固定的投資後,提供穩定的年利息。當然,每一種債券的投資額是不同的,一般來說,投資越大,收益也越大,而且,每一年還可以根據資金總額的增加,更換收益更大的債券。例如 有如下兩...

洛谷1018 乘積最大

原題位址 劃分型 dp字串 解題思路 1.預處理一下,把i到j擷取的子串轉化為數字 2.明確dp陣列表示的狀態,f i k 表示在前i個字元劃分k次得到的最大乘積 3.初始化,f i 0 t 0 i 0 i 4.三重迴圈跑dp,最外層列舉劃分次數,第二層列舉i,最內一層列舉斷點 斷點在0到i 1範圍...