hdu 1485 非常可樂 題解

2021-06-29 14:01:32 字數 890 閱讀 5282

參見小白書130頁-131頁,關鍵是在狀態的儲存,一開始用l*100+m*10+s儲存每乙個狀態,l,m,s分別表示第乙個第二個第三個杯子所含的可樂的量,不能過,因為這樣的編碼有重複。

#include #include #include #include using namespace std;

const int n = 105;

typedef int state[3];

int l,m,s;

state queues[10500];

int vis[n][n][n];

int dis[n][n][n];

int fronts,rear;

void cal(int &l,int &m,int &s,int n)

else break;

case 1:

all = s - s;

if(all>l)

else break;

case 2:

all = l - l;

if(all>m)

else break;

case 3:

all = s - s;

if(all>m)

else break;

case 4:

all = l - l;

if(all>s)

else break;

case 5:

all = m - m;

if(all>s)

else break;

}}bool chack(state u)

int bfs()}}

return 0;

}int main()

return 0;

}

HDU 非常可樂 (BFS)

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

《HDU 1495 非常可樂》的題解

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

hdu 1495 非常可樂

題意 給你三個容器讓你平分可樂,求最少的步數。思路 一看到求最少步數,就想到了廣搜,但是沒有思路,但看別人分情況,瞬間就明白啦。可以s n,s m,n s,n m,m s,m n這六種情況討論就行,每種又有倒完和倒不完兩種情況,直到出現兩個容器都有s 2,這就是最少步數。但s是奇數時是不能平分的,三...