计蒜客 难题题库 031 无脑博士的试管们
- 390次
- 9.48%
- 1000ms
- 65536K
无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的。有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试管装满或原试管空了。当然每一次灌注都是完全的。由于无脑博士天天这么折腾,早已熟练,溶液在倒的过程中不会有丢失。
写一个程序去帮助无脑博士找出当A是个是空的时候,C试管中硫酸铜溶液所剩量的所有可能性。
输入包括一行,为空格分隔开的三个数,分别为整数A,B和C。
输出包括一行,升序地列出当A试管是空的时候,C试管溶液所剩量的所有可能性。
样例1
输入:
2 5 10
输出:
5 6 7 8 9 10
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<algorithm>using namespace std;int A, B, C;
bool vis[25][25][25];struct node{int a,b,c;
}pre,nxt;queue<node>Q;void solve(){pre.a = 0, pre.b = 0, pre.c = C;while( !Q.empty() ) Q.pop();Q.push( pre );vis[0][0][C] = true;while( !Q.empty() ){pre = Q.front(); Q.pop();int a = pre.a, b = pre.b, c = pre.c;if( a > 0 ){if( b < B ){nxt.a = a-min(a,(B-b)); nxt.b = b+min(a,(B-b)); nxt.c = c; if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;} if( c < C ){nxt.a = a-min(a,(C-c));nxt.b = b;nxt.c = c+min(a,(C-c));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;} }if( b > 0 ){if( a < A ){nxt.a = a+min(b,(A-a));nxt.b = b-min(b,(A-a));nxt.c = c;if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}if( c < C ){nxt.a = a;nxt.b = b-min(b,(C-c));nxt.c = c+min(b,(C-c));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}} if( c > 0 ){if( a < A ){nxt.a = a+min(c,(A-a)); nxt.b = b;nxt.c = c-min(c,(A-a));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}if( b < B ){nxt.a = a;nxt.b = b+min(c,(B-b));nxt.c = c-min(c,(B-b));if( !vis[nxt.a][nxt.b][nxt.c] )Q.push( nxt ), vis[nxt.a][nxt.b][nxt.c] = true;}} }
}
int main(){while( scanf("%d%d%d",&A,&B,&C) != EOF){memset( vis, 0, sizeof(vis) );solve();bool tmp[25];memset(tmp,0,sizeof(tmp));for(int b = 0; b <= B; b++)for(int c = 0; c <= C; c++)tmp[c] |= vis[0][b][c];bool flag = false; for(int i = 0; i <= C; i++)if( tmp[i] ){if( !flag ) printf("%d",i), flag =true; else printf(" %d",i);} puts("");}return 0;
}
计蒜客 难题题库 031 无脑博士的试管们相关推荐
- 计蒜客难题题库之一 泥塑课 python解答
计蒜客挑战难题之一 泥塑课 python解答 题目: 小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过250立方厘米的等量橡皮泥,教大家做泥塑.在上课过程中,她发现每个班都恰好有一个小 ...
- 计蒜客难题题库之二 奇怪的国家 python解答
计蒜客挑战难题之二 奇怪的国家 python解答 题目: 有一个奇怪的国家,里面的国民对于事情的态度永远只有两面.当两个人遇到一起讨论一个事情的时候--两个持赞同观点的人遇到一起后会对这个事情都继续赞 ...
- 计蒜客 难题题库 204 草药的价值
17次 11.7% 1000ms 65536K 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到 ...
- 计蒜客 难题题库 223 字母排序
49次 14.2% 1000ms 65536K XXXX年突然有外星人造访,但大家语言不通,不过科学家们经过研究发现外星人用26个英文字母组成的单词中最长不降子序列的长度来表述数字,且英文字母的排列顺 ...
- 计蒜客 难题题库 205 图书ISBN号码
102次 13.7% 1000ms 65536K 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x& ...
- 计蒜客 难题题库 201 奖学金的分配
46次 30.4% 1000ms 65536K 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(& ...
- 5.计蒜客ACM题库.A2234 结果填空:青蛙爬井
计蒜客ACM题库.A2234 结果填空:青蛙爬井 有一口深度为 high 米的水井,井底有一只青蛙,它每天白天能够沿井壁向上爬 up 米,夜里则顺井壁向下滑 down 米. 若青蛙从某个早晨开始向外爬 ...
- 12.计蒜客信息学题库:T1702 魔法宝石
12.计蒜客信息学题库:T1702 魔法宝石 Bessie 去珠宝商店想要买一些魔法宝石.商店里有 n 个宝石,每个宝石的重量为 wi,幸运值为 vi .Bessie 的购物车只能装重量之和不超过 m ...
- 1.计蒜客ACM题库.A1001 整除问题
计蒜客ACM题库.A1001 整除问题 判断一个数是否能被另一个整数整除是一个挺简单的问题,一般一个模运算就可以搞定了,懒惰的晓萌还是不想自己做,于是找到你帮他写代码,你就帮帮他吧. 输入格式 输入包 ...
最新文章
- Cell:损伤和微生物模式的共同作用控制着根部的局部免疫反应
- ALFNet行人检测
- 微信小程序 PDF下载打印
- 网络流-Dinic求最大流(仅做自己复习,写的很不清楚)
- 一文搞定 Spring Data Redis 详解及实战
- python打印多个变量_在Python中打印多个变量
- Java虚拟机栈详解
- [SDOI2006]保安站岗 树dp
- OpenShift 4 - DevSecOps (3) - 用 RHACS 精细化管理云原生应用安全
- 人工神经网络----Hebbian学习规则
- SQL使用LIKE匹配
- U-boot移植方法
- echarts中国以及各省市地图数据
- 答复: 关于用异常控制程序流程的看法
- win10注册表开机自启
- min_max算法和alpha-beta剪枝 python实现
- 给计算机写程序的第一人竟是一位女子
- 单词1(-cess -ceed -cede -gress -gred -grad)=to go、go
- 老农的计算机学习笔记(一)计算机的诞生及其基础
- [云原生专题-16]:容器 - 在Windows主机上搭建Docker环境