2188 猴子上樹

2021-08-06 06:33:06 字數 1185 閱讀 7597

這一道題本人一開始看還以為是貪心。

其實正解是乙個很普通的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...