HDU1495 非常可樂 BFS

2022-08-22 04:54:09 字數 1042 閱讀 3232

題意:

小明買了一瓶可樂,容量為s,小明有2個杯子,容量分別為n,m,現在小明要把可樂分成體積相等的2部分,問需要幾個步驟。

s,n,m都是整數。

1.若s為奇數,明顯不可以.

2.若s為偶數,進行bfs.

vis陣列,記錄哪些狀態出現過。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int maxn=101;7

bool

vis[maxn][maxn][maxn];

8int

s,n,m;

9struct

edge10;

13bool judge(int s,int n,int

m)14

23int bfs(int

s)24

50 cnt.s=u.s-min(u.s,m-u.m);

51 cnt.n=u.n;

52 cnt.m=u.m+min(u.s,m-u.m);

53if(!vis[cnt.s][cnt.n][cnt.m])

57if(u.n+u.s<=s)65}

66if(u.n+u.s>s)74}

75if(u.n+u.m<=m)83}

84if(u.n+u.m>m)92}

93if(u.m+u.s<=s)

101}

102if(u.m+u.s>s)

110}

111if(u.n+u.m<=n)

119}

120if(u.n+u.m>n)

128}

129130

}131

return -1

;132

}133

intmain()

134148

}149

return0;

150 }

view code

hdu 1495 非常可樂 bfs

題目 剛開始那做這個題 怎麼也想不出為什麼可以用bfs 我認為做這個題目 你想到有6種情況哦 假設s 是瓶子 n,m 是有容量的杯子,s可以倒入n中 s也可以倒入m中 n可以倒入s中 n 也可以倒入m中 m也是一樣的哦 所以就有六種情況哦。下面看具體ac 裡面有註解哦 include include...

HDU 1495 非常可樂 (BFS)

problem description 大 家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這 一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m...

hdu 1495 非常可樂 bfs

大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。因為每次當seeyou買了可樂以後,阿牛就要求和seeyou一起分享這一瓶可樂,而且一定要喝的和seeyou一樣多。但seeyou的手中只有兩個杯子,它們的容量分別是n 毫公升和m 毫公升 可樂的體積為s s 101 毫公升...