這一道題本人一開始看還以為是貪心。
其實正解是乙個很普通的dp。
首先,我們設乙個f[
i][j
] 為前i棵樹,前j只猴子的答案。
於是我們便可以得到乙個狀態轉移方程: f[
i][j
]=mi
n(f[
i−1]
[j−1
],f[
i][j
−1])
+abs
(a[i
]−b[
j])
其中a[i
] 是第i只猴子的座標,b[
j]是第j棵樹的座標。
但題目非常好地提醒了我們注意空間是否超限。
因為我們發現前i棵樹的答案只與前i-1棵樹的答案有關聯。
所以我們開個滾動陣列即可。
#include
#include
#include
#include
using
namespace
std;
long
long a[5100],b[5100];
long
long f[5100][2];
int cmp(const
void *xx,const
void *yy)
long
long mymin(long
long x,long
long y)
scanf("%d",&m);
for(int i=1;i<=m;i++)
qsort(a+1,n,sizeof(long
long),cmp);
qsort(b+1,m,sizeof(long
long),cmp);
memset(f,0,sizeof(f));
for(int i=0;i<=n;i++)
int l=1;f[0][1]=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
}printf("%lld\n",f[n][l]);
return
0;}
BFS HRBUST 2188 星際旅行
星際旅行 time limit 1000 ms memory limit 32768 k total submit 150 66 users total accepted 80 60 users rating special judge no description 小z在星際旅行中,他想從當前起始...
HDU2188 巴什博奕
problem description 對於四川同胞遭受的災難,全國人民紛紛伸出援助之手,幾乎每個省市都派出了大量的救援人員,這其中包括搶險救災的武警部隊,和防疫的醫護人員,以及進行心理疏導的心理學專家。根據要求,我校也有乙個奔赴災區救災的名額,由於廣大師生報名踴躍,學校不得不進行選拔來決定最後的人...
HDU 2188 巴什博弈
題解 剛開始沒思路,後來知道是巴士博弈,茅塞頓開。參考部落格 這道題是先到n誰就贏,林隊先投,問林隊能贏不,所以應該站在先手的角度看怎麼去贏。比如n m 1,不管先手怎麼投,後手肯定贏,所以先手要想贏,必須給後手造成他去投時n m 1,所以當n m 1 r s,先手取s,如果後手取k,先手再取m 1...