草庐IT

非常可乐

MT默哥的博客 2024-01-18 原文

题目描述

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

输入

三个整数 : S 可乐的体积 , N 和 M是两个杯子的容量,以"0 0 0"结束。

输出

如果能平分的话请输出最少要倒的次数,否则输出"NO"。

样例输入

7 4 3
4 1 3
0 0 0

样例输出

NO
3

代码

(不得不说好难啊)

#include <bits/stdc++.h>
using namespace std;
int vis[105][105][105];
int v[3];//可乐瓶和两个杯子的容量
int s,n,m,flag;
struct node{
	int coke[3];//可乐瓶和两个杯子当前的量
	int s;//倒的次数
};
void bfs()
{
	int avg=v[0]/2;
	memset(vis,0,sizeof(vis));
	flag=0;
	queue<node> q;
	node temp;
	
	temp.coke[0]=v[0];
	temp.coke[1]=0;
	temp.coke[2]=0;
	temp.s=0;
	
	vis[v[0]][0][0]=1;
	q.push(temp);
	while(!q.empty())
	{
		temp=q.front();
		q.pop();
		if((temp.coke[0]==avg&&temp.coke[1]==avg)||(temp.coke[0]==avg&&temp.coke[2]==avg)||(temp.coke[1]==avg&&temp.coke[2]==avg))
		{
			cout << temp.s << endl;
			flag=1;
			break;
		}
		//i杯子中的可乐往j中倒
		for(int i=0;i<3;i++)
		{//6种方案:0➡1  0➡2 1➡0 1➡2 2➡0 2➡1
			for(int j=0;j<3;j++)
			{
				if(i==j) continue;//自己不能给自己倒
				node tmp=temp;
				
				int pour=min(tmp.coke[i],v[j]-tmp.coke[j]);//取杯子i中的剩余可乐和杯子j中的剩余容量最小值
				tmp.coke[j]+=pour;
				tmp.coke[i]-=pour;
				
				if(!vis[tmp.coke[0]][tmp.coke[1]][tmp.coke[2]])
				{
					vis[tmp.coke[0]][tmp.coke[1]][tmp.coke[2]]=1;
					tmp.s++;
					q.push(tmp);
				}
			}
		}
	}
	if(!flag) cout << "NO\n";
}
int main()
{
	while(cin >> v[0] >> v[1] >> v[2]&&(v[0]||v[1]||v[2]))
	{
		if(v[0]%2==1)
		{
			cout << "NO\n";
			continue;
		}
		bfs();
	}
	return 0;
}

有关非常可乐的更多相关文章

  1. ruby-on-rails - 使用 HTTParty 的非常基本的 Rails 4.1 API 调用 - 2

    Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"

  2. ruby - 如何在 Ruby 中生成一个非常大的随机整数? - 2

    我想在ruby​​中生成一个64位整数。我知道在Java中你有很多渴望,但我不确定你会如何在Ruby中做到这一点。另外,64位数字中有多少个字符?这是我正在谈论的示例......123456789999。@num=Random.rand(9000)+Random.rand(9000)+Random.rand(9000)但我认为这是非常低效的,必须有一种更简单、更简洁的方法来做到这一点。谢谢! 最佳答案 rand可以将范围作为参数:pa=rand(2**32..2**64-1)#=>11093913376345012184putsa.

  3. Ruby 服务器在本地主机(teambox)之外非常慢 - 2

    我刚刚在我的Ubuntu9.10服务器上安装了TeamBox。我使用提供的服务器脚本在端口3000上启动并运行它。它的运行速度非常慢,从另一台计算机连接时每个HTTP请求最多需要30秒。我使用链接从shell加载TeamBox,一点也不花时间。然后我设置了一个SSH隧道,它再次运行得非常快。我通过此服务器上的apache以及SAMBA等运行了大约30个虚拟主机,没有任何问题。我该如何解决这个问题? 最佳答案 我的redmine(ruby,webrick)太慢了。现在我解决了这个问题:apt-getinstallmongrelruby

  4. ruby-on-rails - 即使没有挂起的迁移,Rails 迁移也非常缓慢 - 2

    我的生产Rails应用程序需要167秒来运行rakedb:migrate。可悲的是,没有要运行的迁移。我试图在检查是否有待处理的迁移时调整运行的迁移,但随后检查花费了同样长的时间。我心目中唯一的“借口”是数据库并不小,那里有1M条记录,但我看不出这有什么关系。我查看了日志,但没有任何迹象表明出了什么问题。我在运行ruby2.2.0rails4.2.0有没有人知道为什么会这样,是否有什么办法可以解决? 最佳答案 运行rakedb:migrate任务还会调用db:schema:dump任务,这将更新您的db/schema.rb。因此,即

  5. ruby - 由于 GEM_HOME 的要求,启动 Ruby 应用程序非常慢 - 2

    我目前正在开发一个ruby​​应用程序,但它运行得非常(非常!)慢..到目前为止,我已经尝试了几件事,我可以将其缩小到主要问题:Ruby正在尝试在$LOAD_PATH的每个目录中查找它的需求。基本上我所观察到的是,ruby正在查看大量文件,试图查看那里是否存在需求。如果找不到它们,它将转到下一个目录。好消息是我可以通过strace看到这种情况。有很多这样的输出:open("/boa_proj_build/nsteen/.gem/gems/i18n-0.7.0/lib/commander/help_formatters/base.rb",O_RDONLY|O_CLOEXEC)=-1ENO

  6. 一个非常明显的现象,正在发生——元宇宙正在被越来越多的人所推崇 - 2

      一个非常明显的现象,正在发生——元宇宙正在被越来越多的人所推崇,无论是科技巨头,还是资本巨头,几乎都是如此。同时,区块链则正在一点一点地回归理性与客观。对于区块链来讲,这是一个好现象。它告诉我们,人们对于区块链的狂热而激进的认识,正在被一步又一步的校正和纠偏。由此,区块链行业的发展,将会真正进入到一个全新的发展阶段。  同以往人们仅仅只是将区块链看成是一个概念,并以此来获取资本和流量不同。当人们对于区块链的认识变得深入,资本和流量反倒不再是区块链玩家们真正关心的问题。至少从当下情况来看,那些依然还在区块链行业里坚守的玩家们,更多地在坚持长期主义,更多地在寻求区块链与行业结合的正确的方式和方

  7. Ruby 正则表达式,只有一次捕获(非常简单!) - 2

    我想这将是一个愚蠢的错误,但对我来说,以下返回一个仅包含“M”的数组。看这个:/(.)+?/.match("Manymanycharacters!").captures=>["M"]为什么它不返回每个字符的数组?我一定是错过了一些明显的东西,因为我看不出这有什么问题?编辑:刚刚意识到,我不需要+?但没有它仍然无法工作。编辑:抱歉!我会澄清:我的目标是让用户输入正则表达式和样式以及输入文本文件,只要有匹配项,文本就会被html元素包围并应用样式,我不只是拆分将字符串转换为字符,我只使用了给定的正则表达式,因为它是最简单的,尽管这对我来说很愚蠢。我如何从scan()获取捕获组或者这是不可能

  8. arrays - Ruby - 是找到两个非常大的数组之间差异的有效方法吗? - 2

    在查找两个非常大的数组之间的差异时,我遇到了有关效率和算法的问题。我希望对算法有很好理解的人可以为我指出正确的方向来解决这个问题,因为我当前的实现花费了非常长的时间。问题:我有两个非常大的数组。一个包含具有无效域名的电子邮件列表,另一个是我需要对照第一个数组检查的混合列表。accounts_with_failed_email_domains=[279,000recordsinhere]unchecked_account_domains=[149,000recordsinhere]我需要做的是浏览unchecked_account_domains列表,然后比较每个条目以查看account

  9. ruby - ruby、openssl、unicorn、systemd (Gcloud) 的非常奇怪的行为 - 2

    我们开始在日志中看到一些奇怪的错误,这些错误通常在ruby​​未使用OpenSSL正确编译时出现。但它不一致...我们收到如下错误:RuntimeError:不支持的摘要算法(SHA256)。(还有其他摘要,如sha1)。exampleerrortraceFaraday::SSLError(SSL_CTX_new:(null))exampleerrortrace我们在使用serviceunicornstart或systemctlstartunicorn启动unicorn时成功重现了它。但只有一些请求...不是全部。某些在后台使用OpenSSL的请求确实有效。其他人没有。但是,当我们使用

  10. ruby - ruby 中的大数组操作非常慢 - 2

    我有以下场景:我需要在一个非常大的集合中找出唯一的ID列表。例如,我有6000个id数组(关注者列表),每个数组的大小范围在1到25000(他们的关注者列表)之间。我想获得所有这些ID数组中的唯一ID列表(关注者的唯一关注者)。完成后,我需要减去另一个ID列表(另一个人的关注者列表)并获得最终计数。最后一组唯一ID增长到大约60,000,000条记录。在ruby​​中,将数组添加到大数组时,它开始变得非常慢,大约几百万。添加到集合中一开始需要0.1秒,然后增长到200万时需要超过4秒(离我需要去的地方不远)。我用java编写了一个测试程序,它在不到一分钟的时间内完成了整个过程。也许我在

随机推荐