題意:給你三個容器讓你平分可樂,求最少的步數。
思路:一看到求最少步數,就想到了廣搜,但是沒有思路,但看別人分情況,瞬間就明白啦。可以s->n,s->m,n->s,n->m,m->s,m->n這六種情況討論就行,每種又有倒完和倒不完兩種情況,直到出現兩個容器都有s/2,這就是最少步數。但s是奇數時是不能平分的,三個容器的容積都是整數。不一定偶數就能可以平分,我因為少了這個條件,而wa一次。。
#include#include#include#includeusing namespace std;
int s,n,m;
struct node;
bool vis[110][110][110];
void bfs()
if(p.a!=0)
else
if(!vis[q.a][q.b][q.c])
if(p.a>m-p.c)
else
if(!vis[q.a][q.b][q.c])
}if(p.b!=0)
else
if(!vis[q.a][q.b][q.c])
if(p.b>m-p.c)
else
if(!vis[q.a][q.b][q.c])
}if(p.c!=0)
else
if(!vis[q.a][q.b][q.c])
if(p.c>n-p.b)
else
if(!vis[q.a][q.b][q.c])
} } printf("no\n");
return;
}int main()
return 0;
}
hdu 1495 非常可樂
hdu 1495 非常可樂 題目大意 給你三個容器,他們的容量分別是 s,n,m 且s n m,給你s,n,m。s代表裝在容器裡可樂,n和m代表的是兩個杯子的容量,求他們能否平分這杯可樂。如果能就輸出倒的最小次數,如果不能就輸出 no。題目分析 也就是要達到能 s 2,0,s 2或 0 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卻不這麼認為。...