p1292監獄(動態規劃)

2022-08-16 13:48:18 字數 1718 閱讀 1664

描述 description

小x的王國中有乙個奇怪的監獄,這個監獄一共有p個牢房,這些牢房一字排開,第i個僅挨著第i+1個(最後乙個除外),當然第i個也挨著第i-1個(第乙個除外),現在牢房正好是滿員的。

上級下發了乙個釋放名單,要求每天釋放名單上的乙個人。這可把看守們嚇得不輕,因為看守們知道,現在牢房裡的p個人,可以相互之間傳話。第i個人可以把話傳給第i+1個,當然也能傳給第i-1個,並且犯人很樂意把訊息傳遞下去。

如果某個人離開了,那麼原來和這個人能說上話的人,都會很氣憤,導致他們那天會一直大吼大叫,搞得看守很頭疼。如果給這些要發火的人吃上肉,他們就會安靜下來。

為了河蟹社會,現在看守們想知道,如何安排釋放的順序,才能是的他們消耗的肉錢最少。

輸入格式 input format

第一行兩個數p和q,q表示釋放名單上的人數;

第二行q個數,表示要釋放哪些人。

輸出格式 output format

僅一行,表示最少要給多少人次送肉吃。

樣例輸入 sample input

20 3

3 6 14

樣例輸出 sample output

35樣例解釋: 先放14號犯人,給19個人肉吃,再放6號犯人,給12個人肉吃,最後放3號,給4個人肉吃,一共35個。

時間限制 time limitation

1s注釋 hint

【資料規模】

1<=p<=1000; 1<=q<=100.

q<=p,且 50%的資料 1<=p<=100;1<=q<=5;

** source

codejam 

(還是得回來搞動規哇)

這道題就是乙個區間動態規劃的題,因為一共要放出來m個罪犯,但是沒放出來乙個罪犯後,能和這個罪犯說到話的人都會很生氣,所以必須要給他們吃肉。。。。。所以就用乙個陣列sun[i]來記錄釋放第i個罪犯前需要支付的肉之和,然後用f[i][j]表示釋放i到j中的罪犯最少需要多少肉,所以就可以知接在i到j中列舉出k,所以

f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+sum[j]-sum[i-1]+j-i-1);

//動規還是掌握的不好啊還得多寫點題

**如下:

#include#include

#include

#include

#include

using

namespace

std;

int a[1100

];int f[1100][1100

];int sum[1110

];int

main()

sum[m+1]=n-a[m];

for(int i=1;i<=m+1;i++)

sum[i]=sum[i]+sum[i-1

]; f[

0][0]=0

; f[m+1][m+1]=0

;

for(int i=m+1;i>=1;i--)}}

cout

<1][m+1]<

return0;

}

ε(┬┬﹏┬┬)3

P2051(動態規劃)

這次小可可想解決的難題和中國象棋有關,在乙個n行m列的棋盤上,讓你放若干個炮 可以是0個 使得沒有乙個炮可以攻擊到另乙個炮,請問有多少種放置方法。大家肯定很清楚,在中國象棋中炮的行走方式是 乙個炮攻擊到另乙個炮,當且僅當它們在同一行或同一列中,且它們之間恰好 有乙個棋子。你也來和小可可一起鍛鍊一下思...

問題 P 動態規劃 收益

題目描述 建太空梯進入太空要1兆億?魔法學院的院長瞪大了眼睛。這只是基礎設施的費用,後期還要 墨老師掰著手指算。哎呀,現在地主也很窮啊,學院的錢批下來就這麼多,你想辦法用這筆錢在債券市場上獲得最大收益吧。院長皺著眉頭。簡單來說,就是你有一筆錢,你要將這筆錢去投資債券,現在有d種債券,每種債券都有乙個...

P1651 塔 動態規劃

輸入格式 第一行為乙個整數n,表示木塊個數。第二行是n個整數,表示n塊木塊的高度。資料規模 對於100 的資料,n 50,每塊木塊的高度h滿足1 h 500000,所有木塊的高度總和 500000。輸出格式 僅乙個整數,表示能搭建的塔的最大高度,若不能搭建兩座相同高度的塔,則輸出 1 輸入樣例 1 ...