kuangbin专题 专题一 简单搜索 非常可乐 HDU - 1495

[kuangbin带你飞]专题一 做题顺序与题解 【简单搜索】 随便说点: 博主正在刷kuangbin专题的题目,初学者,没接触过什么算法,刷题的初衷是备战蓝桥杯,后来发现了算法资料大多是针对acm的,挑选kuangbin专题入门也是如此,毕竟这样分类看起来比较有目的的刷题。 所以有的代码比较冗余,越往后面的题解代码变化越大, 代码的风格和算法思想也是在一步步的学习和进步,多多包容,互相借鉴。 建议做题顺序: 11 2 12 3 1 8 13 6 14 ... 阅读详情

非常可乐 HDU - 1495

题目链接:https://vjudge.net/problem/HDU-1495

题意:有两个空杯(分别是N升和M升)和一罐满的可乐S升,S = N + M,三个容器可以互相倾倒,如果A倒入B,只有两种情况:
(1) A全部倒入B中,B中的升数小于等于B的最大容量。
(2)A部分倒入B中,B已经到达了B的最大容量。
问:有没有可能把S升的可乐平分在任意两个容器中,有的话得出最少操作次数,否则输出“NO”。

思路:bfs,把六种情况都模拟枚举(代码写的比较形象),需要标记出现过的三个容器的容量情况,否则会TLE。

#include <iostream>
#include <cstring>
#include<vector>
#include<string>
#include <cmath>
#include <map>
#include <queue>
#include <algorithm>
using namespace std;

#define inf (1LL << 31) - 1
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define rep__(i,j,k) for(int i = (j); i < (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
#define per__(i,j,k) for(int i = (j); i > (k); i--)

int NL, ML, SL, AVE;
//bool vis[110][110][110];

struct node{

	int N, M, S, V;

	node(int a, int b, int c, int d){
		N = a;
		M = b;
		S = c;
		V = d;
	}
	
	//这里面内嵌的  if表示(1)情况
	//             else表示(2)情况
	void Pour(int f, int s){

		if (f == 1){
			if (s == 2){
				int t = ML - M;
				if (N >= t) N -= t, M = ML; //(1)
				else M += N, N = 0; //(2)
			}
			else if (s == 3){
				int t = SL - S;
				if (N >= t) N -= t, S = SL;
				else S += N, N = 0;
			}
		}
		else if (f == 2){
			if (s == 1){
				int t = NL - N;
				if (M >= t) M -= t, N = NL;
				else N += M, M = 0;
			}
			else if (s == 3){
				int t = SL - S;
				if (M >= t) M -= t, S = SL;
				else S += M, M = 0;
			}
		}
		else if (f == 3){
			if (s == 1){
				int t = NL - N;
				if (S >= t) S -= t, N = NL;
				else N += S, M = 0;
			}
			else if (s == 2){
				int t = ML - M;
				if (S >= t) S -= t, M = ML;
				else M += S, S = 0;
			}
		}
	}

};

//可以看出,我用了两个方法都可以标记情况
void bfs(){

	map<pair<int, int>, bool> mp;//标记三个容器的容量情况,防止出下过的再次出现在队列中
	pair<int, int > p(0, 0);
	mp[p] = true;
	node in(0, 0, SL, 0);
//	vis[in.N][in.M][in.S] = true;
	queue<node> que;
	que.push(in);

	while (!que.empty()){

		node tmp = que.front();
		que.pop();
		
		//六种情况,Pour(x,y) 把X中的倒入y中,应该是很清楚了
		rep(i, 1, 6){
			node t = tmp;

			if (i == 1) t.Pour(1, 2);
			else if (i == 2) t.Pour(1, 3);
			else if (i == 3) t.Pour(2, 1);
			else if (i == 4) t.Pour(2, 3);
			else if (i == 5) t.Pour(3, 1);
			else if (i == 6) t.Pour(3, 2);
			
			//检查有没有出现平分了
			int key = 0;
			if (t.N == AVE) key++;
			if (t.M == AVE) key++;
			if (t.S == AVE) key++;
			//平分了
			if (key >= 2){
				cout << tmp.V + 1 << endl;
				return;
			}

			p.first = t.N;
			p.second = t.M;
			pair<int, int > p(t.N, t.M);
			if (!mp[p]/*!vis[t.N][t.M][t.S]*/){
				mp[p] = true;
			//	vis[t.N][t.M][t.S] = true;
				que.push(node{ t.N, t.M, t.S, tmp.V + 1 });
			}
		}
	}

	cout << "NO" << endl;
}

int main(){

	ios::sync_with_stdio(false);
	cin.tie(0);

	while (cin >> SL >> NL >> ML){

		memset(vis, 0, sizeof(vis));

		if (NL == 0 && ML == 0 && SL == 0) break;
		AVE = SL / 2;
		if (SL & 1){
			cout << "NO" << endl;
			continue;
		}
		bfs();
	}

	return 0;
}
kuangbin带你飞 专题1-23 题单 kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓。 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接。 [kuangbin带你飞专题目录1-23] : https://vjudge.net/article/187 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That... 阅读详情

相关推荐

地平线Matrix-Client实战:3分钟搞定摄像头调试与3D视图配置(附避坑指南)

本文详细介绍了地平线Matrix-Client在摄像头调试与3D视图配置中的实战技巧,包括环境准备、核心功能快速上手、高阶调试与性能优化等。通过3分钟快速配置指南和避坑建议,帮助开发者高效完成智能视觉系统开发,特别适用于自动驾驶和机器人视觉领域。

w7x8y9z的博客 267

[kuangbin带你飞]专题一 简单搜索 M - 非常可乐 HDU 1495

M - 非常可乐 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1495 Appoint description:  System Crawler  (2015-11-12) Description

qq1319479809的博客 1827

官网下载STM32系列芯片的产品选型手册

官方提供了产品选型手册,便于工程师们进行产品选型。 那么,在哪下载"产品选型手册"呢?请看下文。

Weber Zhou 的博客 1万+

[kuangbin]专题一 简单搜索 非常可乐 HDU - 1495【BFS】

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

inv0ker的博客 178

利用Nginx反向代理实现GitLab自定义域名的高效配置

本文详细介绍了如何利用Nginx反向代理实现GitLab自定义域名的高效配置。通过统一域名管理、性能优化和安全加固,提升GitLab的访问效率和安全性。文章包含前期准备、GitLab基础配置、Nginx反向代理设置及常见问题排查,帮助开发者快速完成部署。

weixin_28834169的博客 164

Nvidia Isaac Sim安装与配置 入门教程 2024(2)

Isaac Sim 安装和配置教程将指导用户完成从下载软件到设置和运行仿真的全过程。教程内容包括安装必要的依赖项、配置系统环境、配置Omniverse环境以及调试和优化仿真环境的步骤。通过详细的操作步骤和图文并茂的说明,用户可以快速上手 Isaac Sim,构建出高质量的机器人仿真环境,实现其研究和应用目标。

m0_56661101的博客 2万+

HDU 1495 非常可乐([kuangbin带你飞]专题一 简单搜索)

题目大意:题目连接 给你杯子 S,N,M   只有s中有可乐,问他们能平分吗; 解题思路: 搜索,计算达到每一步所要的操作次数, #include #include #include using namespace std; struct node{ int a[3]; int setp; }info; const int maxn =100+5; int h[maxn][

Strive 613

elasticsearch-6.5.4集群部署(图文详细)及常见错误

目录 服务器规划 部署包下载 服务器初始化(所有节点都要操作) 内核参数修改 /etc/security/limits.conf修改 /etc/sysctl.conf文件修改 禁用selinux 关闭防火墙 创建es用户 安装jdk es部署 单节点(节点1)部署 部署包上传解压 配置文件修改 修改文件属组 部署包分发 单节点(节点2)部署 配置文件修改 修改文件属组 单节点(节点3)部署 配置文件修改 修改文件属组 启动ES集群 验证 单节点验证 查看集

夜灬狼丶 1977

HDU 1495 非常可乐 (kuangbin带你飞 专题一:简单搜索)

六种倒可乐情况...m到n或s,n倒m或s,s倒n或m...每一种倒法都有两种:倒满了或者没倒满...应该不算是难题,不过就是不好写...写的满令人崩溃的...去hdu交这个题目的时候发现以前A过了,看了一下好像是看的讨论版的规律...真是惭愧... BFS写法: #include #include #include #include #include #include using names

553

Python+Tableau 全流程数据分析实战:从数据清洗到商业洞察可视化

本文通过Python+Tableau完整演示电商销售数据分析流程。首先使用Python进行数据清洗(缺失值处理、异常值过滤等)和探索性分析(商品类别、时间趋势等),然后导入Tableau创建交互式可视化仪表盘。分析发现电子产品销售额最高但利润率低,美妆类利润率最优,东部地区销售表现最好。最终提出优化供应链、加强美妆推广等商业建议,展示了Python数据处理与Tableau可视化的高效配合。所有代码可直接运行,适合数据分析初学者和从业者实战参考。

weixin_44520581的博客 337

18、基于FSDD数据集的深度学习案例分析

本文基于FSDD(Free Spoken Digit Dataset)数据集,系统介绍了深度学习在语音数字识别中的应用。内容涵盖动态与静态计算图的对比、数据预处理流程(包括数据增强、固定长度处理和归一化)、监督学习与无监督学习的模型构建与训练过程,并通过实验对比了不同网络架构的性能。文中使用PyTorch实现2层全连接网络和自编码器模型,展示了正则化技术对提升模型准确率的关键作用。最后总结了关键技术并提出了实际应用建议,展望了未来在复杂模型、多模态融合和实时应用方向的发展潜力。

vscode6remote的博客 259

[kuangbin带你飞]专题一 简单搜索 - M - 非常可乐 HDU - 1495

非常可乐Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20211    Accepted Submission(s): 8199Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么...

帅帅的博客 214

20、微电网系统的系统框架、建模与控制架构解析

本文详细解析了微电网系统的系统框架、建模方法以及控制架构。文章首先介绍了在系统的系统(SoS)框架下,微电网如何通过微控制器(MC)和微电网中央控制器(MGCC)协调运行,并支持并网与孤岛模式下的高效能量管理。随后,针对微电网的关键组件,包括微涡轮机、光伏太阳能电池和风力涡轮机,提供了详细的数学建模分析。最后,探讨了微电网的控制架构设计,涵盖分层控制和共识控制策略,以实现系统的高效、稳定运行,满足日益增长的能源需求与市场要求。

elastic6hunter的博客 206

[kuangbin带你飞]专题一 简单搜索M - 非常可乐(HDU 1495)

M - 非常可乐 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1495 Appoint description:  System Crawler  (2015-11-05) Description

ZZ_AC的博客 1200

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

kuangbin 简单搜索 - HDU - 1495 非常可乐 (数论是最简单的)

13.kuangbin 简单搜索 - HDU - 1495 非常可乐 (数论是最简单的) (这道题用数论做最简单了,bfs稍后补上!!!) #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0

ACM-ICPC 现役(铜牌) Codeforces Rating: 2172 1021

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

老鱼的-kuangbin专题题解

kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Fliptile POJ 1426 Find The Multiple POJ 3126 Prime Path POJ 3087 Shuffle’m Up POJ 3414 Pots FZU...

DeathYmz的博客 1954

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

kuangbin带你飞专题合集

[kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶...

繁凡さん的博客 2640

基础搜索(kuangbin专题)

目录棋盘问题 (POJ-1321)Dungeon Master (POJ-2251)Catch That Cow (POJ-3278)Fliptile (POJ-3279) 棋盘问题 (POJ-1321) 题目链接:传送门 题意:给定一个n*n的不规则棋盘,要求放入k个棋子,其中“#”能放棋子,“.”空白不能放棋子,且对于已经放了的棋子不能再放入同一行、同一列,求出有多少种放棋子的方案 其实不难,就是一个深度遍历加上回溯 #ifndef _GLIBCXX_NO_ASSERT #include <cas

qq_51537972的博客 1832

KuangBin 专题一:简单搜索

KuangBin 专题一:简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow [POJ 3279 Fliptile]更新中 POJ 1426 Find The Multiple POJ 3126 Prime Path POJ 3087 Shuffle’m Up [POJ 3414 Pots]更新中 [FZU 2150 Fire Game]更新中 [UVA 11624 Fire!]更新中 POJ 3984 迷宫问题 HDU 12

weixin_45867800的博客 213

“kuangbin带你飞”专题计划——专题一:简单搜索

kuangbin带你飞 1.难以提升emmmm。试着埋头搞专题,看能不能提升效率。 2.顺便当是复习了蓝桥杯了。 专题一:简单搜索 1.POJ-1321-棋盘问题 标签:暴力,搜索 题解:直接暴力,注意不要重复搜索 代码:我自己看的话点题目的链接就好了。粘贴在这里太繁琐,就没弄了。 2. ...

I_have_a_world的博客 476

kuangbin 专题一 简单搜索

kuangbin 专题一 简单搜索1.POJ1321棋盘问题[DFS]2.POJ2251Dungeon Master[三维空间BFS]3.POJ3278 Catch That Cow[BFS]4.POJ3279 Fliptile[状态压缩+DFS]5.POJ1426 Find The Multiple[BFS]6.POJ3126 Prime Path[BFS]7.POJ3087 Shuffle'm Up[简单模拟]8.POJ3414 Pots[BFS]9.FZU2150 Fire Game[BFS+暴力]1

qw991的博客 423

kuangbin专题一:M题,HDU1495:非常可乐

HDU1495:非常可乐 kuangbin专题一:M题 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17203Accepted Submission(s): 6970 Problem Description 大...

aboc43983的博客 162

kuangbin专题一 简单搜索 HDU1495

给一瓶可乐和两个杯子,容量分别为A,B,C,求平分可乐的最小步数。 常规的bfs题,每种状态可以有6种操作,用map记录每种状态及相应的步数。 记得每次重新读数据要初始化ans和map! AC代码: #include<cstdio> #include<queue> #include<vector> #include<cstring> #in...

tgyy_cool的博客 190

[kuangbin带你飞]专题一 简单搜索 题解

专题一 简单搜索 POJ 1321棋盘问题 POJ 2251Dungeon Master POJ 3278Catch That Cow POJ 3279Fliptile POJ 1426Find The Multiple POJ 3126Prime Path POJ 3087Shuffle'm Up POJ 3414Pots FZU 2150Fire Game...

一叶之修的博客 453
上一篇: kuangbin专题 专题一 简单搜索 Oil Deposits HDU - 1241
下一篇: kuangbin专题 专题一 简单搜索 Find a way HDU - 2612
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值