把n
nn隻馬分配到k
kk個馬房裡,並且按照順序放。
對於每乙個馬房都有乙個叫做「不高興係數」,即白色馬的數量∗
*∗黑色馬的數量。
任務是合理地分配這n
nn隻馬,使得它所有馬房的「不高興係數」和最小。
d pdp
dp,設f [i
][j]
f[i][j]
f[i][j
]表示用i
ii個馬房裝j
jj匹馬的最小不高興係數
預處理第i
ii匹馬時有多少只白馬,多少只黑馬,接著算出乙個馬房裝1
n1~n
1n匹馬的不高興係數為多少
f [i
][j]
=f[i
−1][
k]+(
b[j]
−b[k
])∗(
w[j]
−w[k
])
f[i][j]=f[i-1][k]+(b[j]-b[k])*(w[j]-w[k])
f[i][j
]=f[
i−1]
[k]+
(b[j
]−b[
k])∗
(w[j
]−w[
k])
在前j
jj隻馬中在分出乙個馬房,以k
kk為乙個中間量劃分
#include#include#includeusing namespace std;
int n,k;
int a[505],w[505],b[505],f[505][505];
int main()
memset(f,0x3f,sizeof(f));
for(int i=1;i<=n;i++)
f[1][i]=w[i]*b[i];
for(int i=2;i<=k;i++)
for(int j=i+1;j<=n;j++)
for(int k=1;kf[i][j]=min(f[i][j],f[i-1][k]+(w[j]-w[k])*(b[j]-b[k]));
printf("%d",f[k][n]);
}
東莞市2023年特長生 T4 柵欄的木料
給出n nn個木板,要從這些木板中分出k kk個木料 二分 搜尋 剪枝即可 預處理 將木板和木料都從小到大排序 二分列舉分出前mid midmi d個木料,是否可以分出 搜尋判斷是否可以分出 剪枝 1 w ww為浪費,tot totto t為總長度,對於一塊木材,將其切斷一部分滿足一些木板後,倘若剩...
東莞市2023年特長生 T3 工程
一天公司接下一項大型工程,該公司在大型工程的施工前,先要把整個工程劃分為若干個子工程,並把這些子工程編號為1 2 n 1 2 n 1 2 n 這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些子工程完成之後才能施工,公司需要工程師張三計算整個工程最少的完成時間。對於上面問題,可以假設...
東莞市2023年特長生 T4 擺渡線路
某市的m mm公園中有乙個近乎圓形的湖,有100 10010 0個主要景點分布在湖邊,為了方便遊客,公園在一些景點之間開設了直通的摩托飛艇擺渡的專案一來減少遊客在景點到景點之間所花的時間,二來也可以讓遊客體驗一下驚險刺激的摩托飛艇。果然摩托飛艇擺渡專案大為成功,為了充分滿足遊客需要,擺渡線路越來越多...