网站建设需要保存什么,彩票开奖网站建设,自己买主机可以做网站吗,要看网站是多少非常可乐 HDU - 1495
大家一定觉的运动以后喝可乐是一件很惬意的事情#xff0c;但是seeyou却不这么认为。因为每次当seeyou买了可乐以后#xff0c;阿牛就要求和seeyou一起分享这一瓶可乐#xff0c;而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子#xff0…非常可乐 HDU - 1495
大家一定觉的运动以后喝可乐是一件很惬意的事情但是seeyou却不这么认为。因为每次当seeyou买了可乐以后阿牛就要求和seeyou一起分享这一瓶可乐而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子它们的容量分别是N 毫升和M 毫升 可乐的体积为S S101毫升 (正好装满一瓶) 它们三个之间可以相互倒可乐 (都是没有刻度的且 SNM101S0N0M0) 。聪明的ACMER你们说他们能平分吗如果能请输出倒可乐的最少的次数如果不能输出NO。
Input
三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量以0 0 0结束。
Output
如果能平分的话请输出最少要倒的次数否则输出NO。
Sample Input
7 4 3
4 1 3
0 0 0
Sample Output
NO
3
方法通过广搜搜索每一个过程及时记录当前状态即可。
AC代码
#include cstdio
#include iostream
#include algorithm
#include cmath
#include cstdlib
#include cstring
#include map
#include stack
#include queue
#include vector
#include bitset
#include set
#include utility
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int il;ir;i)
#define lep(i,l,r) for(int il;ir;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queueint,vectorint ,greaterint q;
const int maxn (int)1e5 5;
const ll mod 1e97;
int v,a,b;
bool vis[120][120][120];
struct node
{int a,b,c;int step;
};
int t;
bool judge(int a,int b,int c)
{if((atbt)||(atct)||(btct))return true;elsereturn false;
}
int bfs()
{node st;st.av;st.b0;st.c0;st.step0;vis[v][0][0]true;queuenode q;while(!q.empty())q.pop();q.push(st);while(!q.empty()){//printf(%d\n,t);node frontq.front();q.pop();for(int i1;i6;i){node tail;switch(i) {case 1:{if(front.a0front.ba){int k1front.a-(a-front.b),k2;if(k10){k10;k2front.afront.b;}else{k1front.a-(a-front.b);k2a;}if(vis[k1][k2][front.c]false){tail.ak1;tail.bk2;tail.cfront.c;tail.stepfront.step1;vis[tail.a][tail.b][tail.c]true;if(judge(tail.a,tail.b,tail.c))return tail.step;//printf(%d %d %d\n,tail.a,tail.b,tail.c);q.push(tail);}}break;}case 2:{if(front.a0front.cb){int k1front.a-(b-front.c),k2;if(k10){k10;k2front.afront.c;}else{k1front.a-(b-front.c);k2b;}if(vis[k1][front.b][k2]false){tail.ak1;tail.bfront.b;tail.ck2;tail.stepfront.step1;vis[tail.a][tail.b][tail.c]true;if(judge(tail.a,tail.b,tail.c))return tail.step;//printf(%d %d %d\n,tail.a,tail.b,tail.c);q.push(tail);}}break;}case 3:{if(front.b0front.av){int k2front.b-(v-front.a),k1;if(k20){k1front.afront.b;k20;}else{k2front.b-(v-front.a);k1v;}if(vis[k1][k2][front.c]false){tail.ak1;tail.bk2;tail.cfront.c;tail.stepfront.step1;vis[tail.a][tail.b][tail.c]true;if(judge(tail.a,tail.b,tail.c))return tail.step;//printf(%d %d %d\n,tail.a,tail.b,tail.c);q.push(tail);}}break;}case 4:{if(front.b0front.cb){int k1front.b-(b-front.c),k2;if(k10){k10;k2front.bfront.c;}else{k1front.b-(b-front.c);k2b;}if(vis[front.a][k1][k2]false){tail.afront.a;tail.bk1;tail.ck2;tail.stepfront.step1;vis[tail.a][tail.b][tail.c]true;if(judge(tail.a,tail.b,tail.c))return tail.step;//printf(%d %d %d\n,tail.a,tail.b,tail.c);q.push(tail);}}break;}case 5:{if(front.c0front.av){int k1front.c-(v-front.a),k2;if(k10){k10;k2front.afront.c;}else{k1front.c-(v-front.a);k2v;}if(vis[k2][front.b][k1]false){tail.ak2;tail.bfront.b;tail.ck1;tail.stepfront.step1;vis[tail.a][tail.b][tail.c]true;if(judge(tail.a,tail.b,tail.c))return tail.step;//printf(%d %d %d\n,tail.a,tail.b,tail.c);q.push(tail);}}break;}case 6:{if(front.c0front.ba){int k1front.c-(a-front.b),k2;if(k10){k10;k2front.cfront.b;}else{k1front.c-(a-front.b);k2a;}if(vis[front.a][k2][k1]false){tail.afront.a;tail.bk2;tail.ck1;tail.stepfront.step1;vis[tail.a][tail.b][tail.c]true;if(judge(tail.a,tail.b,tail.c))return tail.step;//printf(%d %d %d\n,tail.a,tail.b,tail.c);q.push(tail);}}break;}}}}return -1;
}
int main()
{//freopen(in.txt, r, stdin);//freopen(out.txt, w, stdout);ios::sync_with_stdio(0),cin.tie(0);while(scanf(%d %d %d,v,a,b)!EOFabv){memset(vis,false,sizeof(vis));if(v%20){tv/2;int napebfs();if(nape-1)printf(NO\n);elseprintf(%d\n,nape);}elseprintf(NO\n);}return 0;
}