P2858 USACO06FEB 奶牛零食

2021-09-25 15:13:13 字數 1367 閱讀 7092

約翰經常給產奶量高的奶牛發特殊津貼,於是很快奶牛們擁有了大筆不知該怎麼花的錢.為此,約翰購置了n(1≤n≤2000)份美味的零食來賣給奶牛們.每天約翰售出乙份零食.當然約翰希望這些零食全部售出後能得到最大的收益.這些零食有以下這些有趣的特性:

•零食按照1..n編號,它們被排成一列放在乙個很長的盒子裡.盒子的兩端都有開口,約翰每

天可以從盒子的任一端取出最外面的乙個.

•與美酒與好吃的乳酪相似,這些零食儲存得越久就越好吃.當然,這樣約翰就可以把它們賣出更高的價錢.

•每份零食的初始價值不一定相同.約翰進貨時,第i份零食的初始價值為vi(1≤vi≤1000).

•第i份零食如果在被買進後的第a天**,則它的售價是vi×a.

vi的是從盒子頂端往下的第i份零食的初始價值.約翰告訴了你所有零食的初始價值,並希望你能幫他計算一下,在這些零食全被賣出後,他最多能得到多少錢.

513

152

43
區間dp超級簡單題,不說了

#include

#define m(a, b) memset(a, b, sizeof(a))

#define inf 0x3f3f3f3f

#define mod 10000007

using

namespace std;

inline

void

read

(int

&x)while

(ch>=

'0'&& ch<=

'9')

if(c==

'-')x=

-x;}

int n,sum[

2005

],dp[

2005][

2005];

int i,len;

intmain()

for(len=

1; len<=n; len++

)for

(i=1

; i+len<=n; i++

) dp[i]

[i+len]

=max

(dp[i]

[i]+dp[i+1]

[i+len]

+(sum[i+len]

-sum[i]

),dp[i+len]

[i+len]

+dp[i]

[i+len-1]

+(sum[i+len-1]

-sum[i-1]

));printf

("%d\n"

,dp[1]

[n])

;return0;

}

P1118 USACO06FEB 數字三角形

有這麼乙個遊戲 寫出乙個1 n的排列a i 然後每次將相鄰兩個數相加,構成新的序列,再對新序列進行這樣的操作,顯然每次構成的序列都比上一次的序列長度少1,直到只剩下乙個數字位置。下面是乙個例子 3 1 2 4 4 3 6 7 9 16 最後得到16這樣乙個數字。現在想要倒著玩這樣乙個遊戲,如果知道n...

P2983 USACO10FEB 購買巧克力

題解 注意題目開 long long 貪心策略 從低到高,買夠為止 反證 若剩下的有乙個k 比k小,那麼交換,穩賺不賠 所以,在買k之前,所有比他便宜的都買完了 include include include include include include include include using...

洛谷 P2894 USACO08FEB 酒店

題目描述 用線段樹維護三個值 區間最長空位長度,從左端點可以延伸的最長空位長度,從右端點可以延伸的最長空位長度。include include using namespace std const int n 2e6 7 int n,m intlen n max n maxl n maxr n laz...