hdu 1495 非常可樂

2021-07-04 12:09:44 字數 720 閱讀 8221

hdu 1495 非常可樂

題目大意:給你三個容器,他們的容量分別是 s,n,m;且s=n+m,給你s,n,m。s代表裝在容器裡可樂,n和m代表的是兩個杯子的容量,求他們能否平分這杯可樂。如果能就輸出倒的最小次數,如果不能就輸出 no。

題目分析:也就是要達到能 s/2,0,s/2或 0 ,s/2,  s/2 或  s/2, s/2,0 這三種情況。因為要求最小所以 就 bfs 。然後分為 6種情況,s 倒 n和m  ;n倒 s和m ;m倒 s和n;然後就搜,因為全是整數,而且只有三個杯子,所以當s 為奇數的時候 要輸出 no,乙個小小的剪枝。

每一種情況都去搜一下。

#include #include#include#include#define n 101

using namespace std;

struct node

;int visit[n][n][n];

int s,n,m,ans;

bool judge(int a,int b,int c)

int bfs()

}if(next.z<=m)}}

if(next.y>0)

}if(next.z<=m)}}

if(next.z>0)

}if(next.y<=n)}}

}return -1;

}int main()

return 0;

}

hdu 1495 非常可樂

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

hdu 1495 非常可樂

兩個杯子按大小排序,為s m n,1.只要n滿了,就把n裡的東西放到s中 2.只要m非空,就把m中的放到n中 3.如果m為空,把s中的放到m中 超時 include int n,m,s int main if ss aa bb 0 得到均分 if bb b 若小杯子裡裝滿可樂,將小杯子裡的可樂倒入可...

HDU 1495 非常可樂

非常可樂 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 1495 description 大家一定覺的運動以後喝可樂是一件很愜意的事情,但是seeyou卻不這麼認為。...