HDU 1495(非常可乐)

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

 

Author

seeyou

代码(网上):/*BFS简单题
Author: shaorui
链接地址: http://acm.hdu.edu.cn/showproblem.php?pid=1495
思路:预处理m < n < s,以后处理方便点
初始状态,m,n杯中可乐体积为0,s杯中体积为s;
然后分六种情况:
1, s 倒 m
2, s 倒 n
3, m 倒 n
4, m 倒 s
5, n 倒 m
6, n 倒 s

队列中存储的内容为不同的走法上面可以理解成走迷宫中6种不同的走法,由于最少次数等分情况是可乐瓶和刻度大的杯中等分,因此刻度下的杯子肯定为0,设置限定条件对应每种走法,每种走法有对应6种走法,以此类推直到等分或队列为空退出。
直到n,s杯中的可乐能等分(此时m杯中体积为0)为止,若不能等分,则输出 NO

#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
#define maxn 101
bool visited[maxn][maxn];
int m,n,s,si,sj;
struct node
{int x,y,all,t;  //x,y,all分别表示m,n,s杯中可乐的体积,t表示倒了多少次
};
void BFS()
{queue<node> que;memset(visited,false,sizeof(visited));node p,q;p.x = 0,p.y = 0,p.t = 0,p.all = s;que.push(p);visited[p.x][p.y] = true;while(!que.empty()){p = que.front();que.pop();if(p.y == p.all && p.y == s/2)             {printf("%d\n",p.t);return;}if(p.all+p.x > m)                               //s倒m{q.x = m,q.y = p.y,q.all = p.all+p.x-m,q.t = p.t+1;if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}else{q.x = p.all+p.x,q.y = p.y,q.all = 0,q.t = p.t+1;if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}if(p.all+p.y > n)                                //s倒n{q.x = p.x, q.y = n, q.all = p.all+p.y-n,q.t = p.t+1;if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}else{q.x = p.x,q.y = p.all+p.y,q.all = 0,q.t = p.t+1;if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}if(p.x+p.y > n)                                //m倒n{q.x = p.x+p.y-n,q.y = n,q.all = p.all,q.t = p.t+1; if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}else{q.x = 0,q.y = p.x+p.y,q.all = p.all,q.t = p.t+1;if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}q.all = p.all+p.x,q.x = 0,q.y = p.y,q.t = p.t+1; //m倒sif(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;  if(p.x+p.y > m){q.y = p.y+p.x-m,q.x = m,q.all = p.all,q.t = p.t+1;//n倒mif(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}else{q.x = p.x+p.y,q.y = 0,q.all = p.all,q.t = p.t+1;if(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}q.all = p.all+p.y,q.x = p.x,q.y = 0,q.t = p.t+1; //n倒sif(!visited[q.x][q.y])que.push(q),visited[q.x][q.y] = true;}printf("NO\n");
}
int main()
{//freopen("1013.txt","r",stdin);while(scanf("%d%d%d",&s,&m,&n) && (s||m||n)){if(s%2){printf("NO\n");continue;}if(m > n) swap(m,n);BFS();}return 0;
}

自己目前还没有完全写出来,出来后再附上自己的代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析 RocketMQ 业务消息——“事务消息”

引言&#xff1a;在分布式系统调用场景中存在这样一个通用问题&#xff0c;即在执行一个核心业务逻辑的同时&#xff0c;还需要调用多个下游做业务处理&#xff0c;而且要求多个下游业务和当前核心业务必须同时成功或者同时失败&#xff0c;进而避免部分成功和失败的不一致情况…

模型代码联动难? BizWorks 来助力

业务模型设计和沉淀是企业数字化转型过程中非常重要的一个环节, 日趋复杂的业务场景和协作模式给建模的有效性以及模型作为业务资产如何持续发挥价值带来了新的挑战: 设计完成的业务模型是否被合理实现了?经过数月、半年、1年迭代后&#xff0c;模型设计还能否对业务系统的演…

EasyNLP 集成 K-BERT 算法,借助知识图谱实现更优 Finetune

导读 知识图谱&#xff08;Knowledge Graph&#xff09;的概念⾸次出现2012年&#xff0c;由Google提出&#xff0c;它作为⼀种⼤规模语义⽹络&#xff0c; 准确地描述了实体以及实体之间的关系。知识图谱最早应⽤于搜索引擎&#xff0c;⽤于准备返回⽤户所需的知识。随着预训…

一种关于低代码平台(LCDP)建设实践与设计思路

背景 负责菜鸟商业中心CRM系统开发已经有1年多时间&#xff0c;过程中发现有一个痛点&#xff1a;业务线特别多&#xff0c;每个业务线对同一个页面都有个性化布局和不同的字段需求&#xff0c;而我所在的团队就3个人&#xff0c;在资源有限的情况下如何支撑好呢&#xff1f;刚…

(cosψ)的三次方怎么积分

cosψ^3cosψ(1-sinψ^2)cosψ-cosψsinψ^2;之后积分∫&#xff08;cosψ-sinψ^2&#xff09;dψ∫ cosψdψ-∫ cosψsinψ^2dψ&#xff1b;∫ cosψdψsinψ,由分部积分法可得&#xff1a;∫ cosψsinψ^2dψ∫ sinψ^2 d&#xff08;sinψ)&#xff1b;令sinψu,则∫ cos…

Redis 数据类型 list 以及使用场景

数据存储需求&#xff1a;存储多个数据&#xff0c;并对数据进入存储空间的顺序进行区分 需要的存储结构&#xff1a;一个存储空间保存多个数据&#xff0c;且通过数据可以体现进入顺序 list类型&#xff1a;保存多个数据&#xff0c;底层使用双向链表存储结构实现 list 类型数…

TairSearch:加速多列索引查询

互联网及传统行业应用服务的关键数据一般存储在MySQL这类的关系型数据库中。如需缓解数据库访问压力&#xff0c;可引入Redis等缓存系统承担热数据的查询&#xff0c;以此提升查询效能。然而业务场景如果是在数据库上做随意多列组合索引查询或者like模糊匹配查询&#xff0c;使…

qsort函数用法

qsort   功 能: 使用快速排序例程进行排序    用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));    各参数&#xff1a;1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针 用于确定排序…

如何在 Anolis 8上部署 Nydus 镜像加速方案?

在上一篇文章中详细介绍Anolis OS 是首个原生支持镜像加速 Linux 内核&#xff0c;Nydus 镜像加速服务重新优化了现有的 OCIv1 容器镜像格式&#xff0c;重新定义镜像的文件系统&#xff0c;数据与元数据分离&#xff0c;实现按需加载&#xff0c;本文作为使用 Nydus 的教程将详…

机器学习访存密集计算编译优化框架AStitch,大幅提升任务执行效率

近日&#xff0c;关于机器学习访存密集计算编译优化框架的论文《AStitch: Enabling A New Multi-Dimensional Optimization Space for Memory-Intensive ML Training and Inference on Modern SIMT Architectures》被系统领域顶会ASPLOS 2022接收。 AStitch通过编译优化的手段来…

微前端架构的几种技术选型

背景 随着SPA大规模的应用&#xff0c;紧接着就带来一个新问题&#xff1a;一个规模化应用需要拆分。 一方面功能快速增加导致打包时间成比例上升&#xff0c;而紧急发布时要求是越短越好&#xff0c;这是矛盾的。另一方面当一个代码库集成了所有功能时&#xff0c;日常协作绝…

真正的 HTAP 对用户和开发者意味着什么?

数据库的全称是 DBMS&#xff08;Database Management System&#xff09;&#xff0c;早期是不区分 OLTP 与 OLAP 的&#xff0c;E.F.Codd 在 1970 年就提出了关系模型&#xff0c;Jim Gray 在 1976 年提出了事务模型。随着数据库的应用场景越来越丰富&#xff0c;单一数据库的…

const常见用法

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量 下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int Val 10; //Val 20; //错误,不可被修改 2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传…

微服务治理热门技术揭秘:无损上线

为什么有了无损下线&#xff0c;还需要无损上线&#xff1f;无损上线可以解决哪些问题&#xff1f; 本篇文章将一一回答这些问题。 无损上线功能不得不说是一个客户打磨出来的功能我们将从一次发布问题的排查与解决的过程说起。 背景 阿里云内部某应用中心服务在发布过程中出…

深度强化学习技术概述

深度强化学习介绍 强化学习主要用来学习一种最大化智能体与环境交互获得的长期奖惩值的策略&#xff0c;其常用来处理状态空间和动作空间小的任务&#xff0c;在如今大数据和深度学习快速发展的时代下&#xff0c;针对传统强化学习无法解决高维数据输入的问题&#xff0c;2013…

大屏小程序探索实践 | Cube 技术解读

所谓大屏小程序&#xff0c;是以 Cube 小程序技术栈 为载体&#xff0c;运行在智能电视或智能机顶盒等设备上的一种小程序形态。这些设备的主要特点是&#xff1a; 以 Android 系统为主&#xff0c;系统版本普遍较低&#xff0c;有些设备依然停留在 Android 4.2&#xff0c;An…

阿里云解决方案架构师张平:云原生数字化安全生产的体系建设

关于今天的分享主题——“安全生产”&#xff0c;内容主要分为三大部分&#xff1a; 第一部分是安全生产的背景&#xff0c;以及我们对于安全生产这个领域的理解&#xff1b;第二部分主要介绍阿里巴巴集团的安全生产工作到底是怎么开展的&#xff0c;借此给各位有作为参考和借…

从斜边之长为L的一切直角三角形中,求有最大周长的直角三角形.(多元函数的极值及其求法)

三条直线围成的直角三角形三个顶点A(16,0),B(0,8),C(0,0),设点(x,y)到AB,BC,AC的距离分别是d1,d2,d3,有: |AB|*d1|BC|*d2|AC|*d32S(ABC) 而(|AB|*d1|BC|*d2AC*d3)^24S^(ABC)/(|AB|^2|BC|^2|AC|^2)128/5 等号成立当且仅当|AB|/d1|BC|/d2|AC|/d3 就是40/|x2y-16|8/|x|16/|y| …

全链路灰度新功能:MSE上线配置标签推送

为什么需要配置标签推送 从全链路灰度谈起 在微服务场景中&#xff0c;应用的灰度发布迎来了新的挑战。不同于单体架构中将应用整体打包即可发布测试版本&#xff0c;微服务应用往往由多个服务组合而成。这些服务通常由不同的团队负责&#xff0c;独立进行开发。一个新功能通…

动态尺寸模型优化实践之 Shape Constraint IR Part I

在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作&#xff0c;鉴于篇幅较长&#xff0c;为了提升阅读体验&#xff0c;我们将分享拆分为两个部分&#xff1a; Part I 中我们将介绍问…