(BFS搜尋) HDU 1495 非常可樂

2021-08-19 06:26:24 字數 671 閱讀 9236

最開始沒太懂題意,以為另外兩個瓶子裡的值相等就行了。。搜了題解才知道要用bfs,記錄每一步的狀態,一次一次把每乙個有可樂的杯子倒到另外的杯子裡去,直到所有的可樂被平分在兩個容器裡(可樂瓶+乙個杯子也可以)。

需要注意的就是多組樣例,每一次需要把佇列清空,所以最好就在bfs函式裡建立佇列。

#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define pi 3.1415926

#define inf 0x3f3f3f3f

using namespace std;

const int maxn = 100+10;

int a[4],ans,vis[maxn][maxn][maxn];

struct node

tmp,p;

void bfs()

else//i的可樂能裝滿j

if(!vis[p.n[1]][p.n[2]][p.n[3]])

memset(vis,0,sizeof vis);

vis[a[1]][a[2]][a[3]] = 1;

bfs();

}}

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 毫公升...