HDU
来源:互联网 发布:goodix和fpc差距 知乎 编辑:程序博客网 时间:2024/06/07 12:28
题解:
S必须是偶数,才能够平分,最终可乐瓶和n中的容量各是初始可乐瓶中的一半。
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次数,如果不能输出"NO"。
7 4 34 1 30 0 0
NO3
#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int maxn=105;int vis[maxn][maxn];int m,n,s;struct node{ int m,n,s,t;};queue<node>q;void bfs(){ while(!q.empty()) q.pop(); memset(vis,0,sizeof(vis)); node x,y; x.m=0;x.n=0;x.s=s;x.t=0; q.push(x); vis[x.m][x.n]=1; while(!q.empty()) { x=q.front(); q.pop(); if(x.n==x.s&&x.s==s/2) { cout<<x.t<<endl; return; } if(x.s+x.m>m)//s倒m { y.m=m; y.n=x.n; y.s=x.s+x.m-m; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } else { y.m=x.s+x.m; y.n=x.n; y.s=0; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } if(x.s+x.n>n)//s倒n { y.n=n; y.m=x.m; y.s=x.s+x.n-n; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } else { y.n=x.s+x.n; y.m=x.m; y.s=0; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } if(x.m+x.n>n)//m倒n { y.m=x.m+x.n-n; y.n=n; y.s=x.s; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } else { y.m=0; y.n=x.m+x.n; y.s=x.s; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } if(x.n+x.m>m)//n倒m { y.m=m; y.n=x.n+x.m-m; y.s=x.s; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } else { y.m=x.n+x.m; y.n=0; y.s=x.s; y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } y.s=x.s+m;y.m=0;y.n=x.n;//m倒s y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } y.s=x.s+x.n;y.n=0;y.m=x.m;//n倒s y.t=x.t+1; if(!vis[y.m][y.n]) { q.push(y); vis[y.m][y.n]=1; } } cout<<"NO"<<endl;}int main(){ while(cin>>s>>n>>m,s+n+m) { if(s&1) cout<<"NO\n"; else { if(m>n) swap(m,n); bfs(); } } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- Day1-2.Primitive types
- 修改输入框placeholder文字默认颜色-webkit-input-placeholder
- POI Word 模板 文字 图片 替换
- 【python】文件-分割文件的练习
- redis4.0.1(stable)安装和主从复制配置
- HDU
- DataFrame和 Rdd
- 利用Flume拦截器(interceptors)实现Kafka Sink的自定义规则多分区写入
- java创建线程池的四种方法
- 支付宝APP支付(IOS手机端+java后台)版
- echarts学习—2(笔记记录API)
- python实现kindle每天推送博客1----kindle推送原理,python实现qq邮箱登录及邮件发送
- sql语句练习
- 区别Java中的堆与栈