RQNOJ273 馬棚問題(DP)

2021-08-17 05:08:17 字數 1154 閱讀 9577

dp

[i][

j]d p[

i][j

]表示對於前i個馬棚, 裝前j匹馬的不愉快係數的最小值。dp

[i][

j]=m

in(d

p[i]

[j],

dp[i

−1][

k]+c

ost[

k+1]

[j])

d p[

i][j

]=mi

n(dp

[i][

j],d

p[i−

1][k

]+co

st[k

+1][

j]

)對於前i個馬棚,裝前j匹馬的不愉快敘述, 可以考慮對於前i-1個馬棚,裝前k匹馬,然後剩下的乙個馬棚裝k+1到j匹馬。 列舉分界點k,在所有可能的情況中取得乙個最小值即可。

首先就是迴圈的時候,可以注意到對於j < i是沒有意義的,因為題目要求不能有空馬棚,所以對於i個馬棚,至少有j匹馬來裝。

在列舉分界點j的時候,如果不細緻考慮,可以讓其從1到n-1依次列舉。首先說為什麼列舉終點是n-1,還是因為那個原因,馬棚不允許空,也就是後面一定要分到一匹馬。 然後再說列舉起點,準確來說列舉起點應該是i-1,原因也是馬棚不能為空,因為我們狀態轉移方程考慮的是前i-1個馬棚,至少要分到i-1匹馬。

#include

using

namespace

std;

const

int nmax = 505;

const

int inf = 0x3f3f3f3f;

int a[nmax];

int c1[nmax],c0[nmax];

int dp[nmax][nmax];

int n,m;

int cost(int k,int j)

int main()

for(int i = 1;i<=n;++i) dp[1][i] = c1[i] * c0[i];

for(int i = 2;i<=m;++i)}}

int ans = dp[m][n];

printf("%d\n",ans);

}return

0;}

RQNOJ 篝火晚會

題目描述 佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有n個同學,編號從1到n。一開始,同學們按照1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望相鄰的同學。如何下命令調整同學的次序,形成新的乙...

其他 RQNOJ 排考場

期中考之前,總要排一下試場。張校長為此心煩 每個試場擁有的桌椅數不同。為了排試場,不免有些桌子要被移到別的試場去。為了減少移動量,張校長決定再開m個試場 m盡量要小,這是人之常情 將每個試場多餘的桌椅放入新試場內。由於教育局規定 每個試場的桌椅數必須相同。張校長犯難了,於是他找到學noip的你,希望...

其他 RQNOJ 誰拿了獎學金

期中考考完了,總要排排名次。該校有個特殊的規定 前m m 60 名學生有獎學金可以拿。面對那批堆積如山的試卷,王主任茫然無措,於是他來向懂noip的你來求救,希望你能幫助他。注 該校的名次的排列方式為 先排平均分,若平均分相同,則計算方差,方差小的學生排在前面,若方差也相同,則按考號的先後排列 考號...