杭电-1495非常可乐(BFS)

『杭电1495』非常可乐 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请 阅读详情

非常可乐

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7999    Accepted Submission(s): 3198


Problem Description
大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的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
 

这是一个隐藏的BFS,我们必须把每种情况都试一下,这样求出的一定是最少的步骤

我们分为以下几个步骤:

1. 瓶子里还有可乐

(1)瓶子里的可乐能装满杯子 1

(2)瓶子里的可乐不能装满杯子 1

(3)瓶子里的可乐能装满杯子 2

(4)瓶子里的可乐不能装满杯子 2

2 .杯子1还有可乐

(1)杯子1里的可乐能装满瓶子

(2)杯子1里的可乐不能装满瓶子

(3)杯子1里的可乐能装满杯子 2

(4)杯子1里的可乐不能装满杯子 2

2 .杯子2还有可乐

(1)杯子2里的可乐能装满瓶子

(2)杯子2里的可乐不能装满瓶子

(3)杯子2里的可乐能装满杯子 1

(4)杯子2里的可乐不能装满杯子 1

这样来进行搜索就行了,我们用三维数组来标记三种杯子的情况





代码:



#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int vis[101][102][102];
int s,m,n;
struct node{
	int a,b,c,step;
}ta,tb;
queue<node>Q;
bool judge(node w)
{
	int p=0;
	if(w.a==s/2) 
	p++;
	if(w.b==s/2) 
	p++;
	if(w.c==s/2) 
	p++;
	if(p==2)
	return true;
	return false;
}
int bfs()
{
	while(!Q.empty())
	Q.pop();
	ta.a=s;
	ta.b=0;
	ta.c=0;
	ta.step=0;
	Q.push(ta);
	memset(vis,0,sizeof(vis));
	vis[s][0][0]=1;
	while(!Q.empty())
	{
		ta=Q.front();
		Q.pop();
		if(judge(ta))
		return ta.step;
		
		if(ta.a)
		{
			if(ta.a>=m-ta.b)
			{
				tb=ta;
				tb.a=ta.a-(m-ta.b);
				tb.b=m;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			else
			{
				tb=ta;
				tb.a=0;
				tb.b=ta.b+ta.a;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			
			
			if(ta.a>=n-ta.c)
			{
				tb=ta;
				tb.a=ta.a-(n-ta.c);
				tb.c=n;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			else
			{
				tb=ta;
				tb.a=0;
				tb.c=ta.a+ta.c;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
		}
	
		if(ta.b)
		{
			if(ta.b>=s-ta.a)
			{
				tb=ta;
				tb.b=ta.b-(s-ta.a);
				tb.a=s;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			else
			{
				tb=ta;
				tb.b=0;
				tb.a=ta.b+ta.a;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			
			
			if(ta.b>=n-ta.c)
			{
				tb=ta;
				tb.b=ta.b-(n-ta.c);
				tb.c=n;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			else
			{
				tb=ta;
				tb.b=0;
				tb.c=ta.b+ta.c;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
		}
	
		if(ta.c)
		{
			if(ta.c>=s-ta.a)
			{
				tb=ta;
				tb.c=ta.c-(s-ta.a);
				tb.a=s;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			else
			{
				tb=ta;
				tb.c=0;
				tb.a=ta.c+ta.a;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			
			
			if(ta.c>=m-ta.b)
			{
				tb=ta;
				tb.c=ta.c-(m-ta.b);
				tb.b=m;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
			else
			{
				tb=ta;
				tb.c=0;
				tb.b=ta.b+ta.c;
				if(!vis[tb.a][tb.b][tb.c])
				{
					tb.step=ta.step+1;
					Q.push(tb);
					vis[tb.a][tb.b][tb.c]=1;
				}
			}
		}
	}
	return -1;
}
int main()
{
	while(scanf("%d%d%d",&s,&m,&n),s+m+n)
	{
		if(s&1)
		{
			printf("NO\n");
			continue;
		}
		int t=bfs();
		if(t!=-1)
		printf("%d\n",t);
		else
		printf("NO\n");
	}
	return 0;
 } 

LabVIEW Modbus TCP通信避坑指南:解决连接中断、服务器异常与自动重连问题 本文详细解析了LabVIEW环境下Modbus TCP通信的常见问题,包括连接中断、服务器异常等,并提供了自动重连机制的实现方案。通过优化错误处理、超时参数和资源管理,帮助开发者构建更稳定的工业级Modbus TCP客户端,显著提升通信可靠性。 阅读详情

相关推荐

深度学习之基于Pytorch手指静脉识别系统(

一、项目背景与目标手指静脉识别技术是一种新兴的生物特征识别技术,它依据人类手指中流动的血液可吸收特定波长的光线这一科学原理,利用手指内的静脉分布图像来进行身份识别。与传统的生物识别技术(如指纹识别)相比,手指静脉识别技术具有不易伪造、识别精度高、非接触性等特点,因此在安全性要求较高的场景(如金融、医疗、公安等)具有广阔的应用前景。本项目旨在利用PyTorch深度学习框架,构建一套高效、准确的手指静脉识别系统。

Q1744828575的博客 832

HDU 1495 非常可乐

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题意:输入a,b,c三个数,分别代表可乐,和两个杯子,三个容器可以互相倒,问能不能把a平分, 能的话输出最小步数,不能就输出NO。 思路:分别对6种倒法进行BFS #include #include #include #include using na

qinmusiyan的专栏 2761

ESD防护设计宝典(十九):元器件选型宝典——共模电感

然而,这位“大师”的脾气也颇为古怪,若设计者不解其性、用之不当,它非但不能抑制噪声,反而会引入信号完整性恶化、电源压降等新问题,甚至让您的系统EMC性能“雪上加霜”,导致项目在测试阶段功亏一篑。本文将带您深入共模电感的内在世界,从本质解析到参数详解,从设计陷阱到实战选型,全方位领悟其平衡艺术,掌握其应用核心,规避那些足以让项目翻车的致命陷阱。:这是存在于电路板内部的“家贼”。共模电感实质上是一个四端器件,它通过磁场的“加法”与“减法”运算,巧妙地实现了对共模噪声的抑制,同时为差模信号大开绿灯。

m0_56451176的博客 421

【杭电】[1495]非常可乐

看博客里面搜索分类下的题目也不是很多…… 为什么感觉做过好多搜索题了……-.-这一题还是很简单的 (话说突然感觉这种搜索都不难 设置好条件之后就不用动脑子了)首先若要可以倒可乐S&1==0也就是S应为偶数 然后当N==M时 很显然只需要一次 其余的进行搜索 终止条件是S里面有S/2的饮料 N M中较大的那个里有剩下的一半饮料然后……搜索就好了

BoilTask Talk Show 667

Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文) 附安装包网盘下载

Hadoop+Spark+Flink+Zookeeper+Kafka+Hbase+Hive完全分布式高可用集群搭建 Hadoop高可用集群搭建 Spark高可用集群搭建 Flink高可用集群搭建 Zookeeper高可用集群搭建 Kafka高可用集群搭建 Hbase高可用集群搭建 Hive高可用集群搭建 mysql搭建 jdk部署 大数据集群环境搭建

Mr.L-OAM的博客 2万+

【数据集】1970-2023年全球温室气体排放 GHG 数据集 EDGAR

1970-2023年全球温室气体排放 GHG 数据集 EDGAR

WW、forever的博客 1172

【杭电oj】1495 - 非常可乐(bfs,队列)

非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9317    Accepted Submission(s): 3694 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事

wyg1997 2539

汽车电子RTOS--AUTOSAR OS

AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR(汽车开放系统架构)标准中的一个重要组件,它是一个专门为汽车电子控制单元(ECU)设计的实时操作系统(RTOS)。AUTOSAR OS旨在提供一个标准化的软件平台,以促进不同供应商和汽车制造商之间的组件复用和协同开发,提高软件质量和降低成本。

MHD0815的博客 1798

杭电1495 非常可乐(bfs)

escription 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S Input 三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0

yeweiyang的博客 632

LVGL colorwheel组件教程一(调色板)

【代码】LVGL colorwheel组件教程一(调色板)

摸鱼专家 433

26、机器学习模型的成员推断攻击与隐私保护

本文探讨了机器学习模型面临的成员推断攻击及其对隐私的潜在威胁。通过使用CIFAR-10数据集,详细介绍了如何利用影子模型和攻击模型推断特定数据点是否属于模型的训练集。实验表明,即使无法直接访问模型参数和原始数据,攻击者仍能以高于随机猜测的概率进行推断,从而构成隐私风险。此外,文章还分析了实验的关键技术点,并提出了多种隐私保护建议,包括数据脱敏、差分隐私、模型正则化等方法。

coffee的博客 123

hdu 杭电 1495 非常可乐

题意:容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。能平分的话请输出最少要倒的次数,否则输出"NO"。 解法:广搜,每一个队头元素都要进行6次操作,如图进行了n->m一次操作: 对应的6中操作(S->N,S->M,N-&g...

weixin_34404393的博客 156

在 ABAP CDS View 里把 Conversion Functions 用到极致:FLTP 精度、单位换算、货币换算与小数位处理的工程化实践

数据格式转换在真实项目中比业务逻辑更容易引发问题。ABAP CDS中的转换函数(如FLTP_TO_DEC、UNIT_CONVERSION、CURRENCY_CONVERSION和DECIMAL_SHIFT)可帮助在数据库层统一数据口径,避免应用层重复处理。这些函数支持数值精度治理、单位换算、货币转换和小数位调整,能显著提升报表性能并减少逻辑分散。通过将格式转换前移到数据模型层,可以确保服务层和UI层的数据一致性,同时降低接口传输错误风险。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2350

杭电1495 非常可乐 BFS

题意:输入a,b,c三个数,分别代表可乐,和两个杯子,三个容器可以互相倒,问能不能把a平分, 能的话输出最小步数,不能就输出NO。 思路:分别对6种倒法进行BFS #include #include #include #include using namespace std; struct node {

qq_35109846的博客 414

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HDU杭电1495 非常可乐 【BFS】

http://acm.hdu.edu.cn/showproblem.php?pid=1495 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分

Determined&Diligent的专栏 1001

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

非常可乐(杭电hdu1495)bfs

非常可乐 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3510Accepted Submission(s): 1440 Problem Description 大家一定觉的运动以后...

weixin_30279751的博客 155

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

杭电1495 非常可乐(BFS过)简单搜索

非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8576    Accepted Submission(s): 3397 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事

mengxiang000000 2089

(BFS搜索)【HDU 1495】非常可乐

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495最开始没太懂题意,以为另外两个瓶子里的值相等就行了。。搜了题解才知道要用BFS,记录每一步的状态,一次一次把每一个有可乐的杯子倒到另外的杯子里去,直到所有的可乐被平分在两个容器里(可乐瓶+一个杯子也可以)。需要注意的就是多组样例,每一次需要把队列清空,所以最好就在bfs函数里创建队列。#inclu...

Samson的博客 256

杭电1495(C++)

杭电1495 题目 AC代码 #include<iostream> #include<cstring> #include<queue> #include<algorithm> using namespace std; int w[3],flag,state[100][100][100]; struct cond { int v[3]; int step; }; void bfs() { queue<cond>qu; cond first

m0_51427295的博客 132

非常可乐 HDU - 1495 (BFS + 模拟倒水过程 OR 数论)

传送门 非常可乐 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间...

yuewenyao的博客 1066

HDU 1495 非常可乐(BFS 倒水问题)

题意  将体积为s的可乐  利用容积分别为n和m的两个杯子平均分为两份  至少需要倒多少次可乐 可以把容器s,n,m中装的可乐量看成一种状态  容器都是没有刻度的  所以每次倒可乐要么把自己倒完 要么把对方倒满  每种状态可以通过一次倒水到达哪些状态  于是可以通过bfs判断到达每种状态需要倒多少次   3个容器中有一个装的可乐为s/2的状态就是答案了  s是奇数时明显不可能平分的  可以

Deng's site \# 2624

【HDU-OJ】1495_非常可乐

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升...

ZhangDanzhu的博客 447

航电oj1495-非常可乐

具体题目参考航电oj1495: #include <iostream> #include <queue> #include<stdio.h> using namespace std; bool State[101][101][101]; //error:没有考虑过S、M、N的范围,错误地以为定义000到999即可。 struct bottles{...

hzj445993234的博客 319

HDUoj 1495非常可乐 三维BFS

拉了个搜索专题,这是第一道题。虽然之前就见过,可一直没有思路,这次重新写,终于AC。 思路就是把这个问题模型转换成三维坐标中的点,倒可乐就是坐标的变换,只要坐标满足条件即是可乐平分成功。 可乐奇数直接NO,然后广搜,广搜里的两层for也是一个技巧 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring...

补零补零 315

杭电1495非常可乐

非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7978    Accepted Submission(s): 3181 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事

hpuzsk的博客 1128

HDU 1495——非常可乐( BFS )

非常可乐

fsdcyr 776
上一篇: 杭电-2803The MAX
下一篇: 杭电-1950Bridging signals(LIS)
Eric_keke
博客等级 码龄12年 37粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值