NYOJ21 三个水杯 【BFS】

如何理解界面陷阱电荷呢(interface trapped charge)和费米钉扎效应? 如何理解界面陷阱电荷呢?(interface trapped charge) 我们在学半导体物理的时候经常对各种界面态和陷阱分不清楚,然而这却是半导体中最为关键的知识点之一。我这路主要介绍一下如何比较直观地理解界面陷阱电荷,应该也有叫界面态,快态之类的。 在介绍界面陷阱电荷之前,我们可以回顾一下施主(donor)和受主(acceptor)的概念。在si中如果掺杂了n型杂质P,那么P由于最外层电子有5个,有一个电子比较容易跑走,成为自由移动的导电电子,在能带中可以表现为电子从禁带中的能级跃迁到导带,这种情况我 阅读详情

三个水杯

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
描述
给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。
输入
第一行一个整数N(0<N<50)表示N组测试数据
接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V1<100 V3>0)表示三个水杯的体积。
第二行给出三个整数E1 E2 E3 (体积小于等于相应水杯体积)表示我们需要的最终状态
输出
每行输出相应测试数据最少的倒水次数。如果达不到目标状态输出-1
样例输入
2
6 3 1
4 1 1
9 3 2
7 1 1
样例输出
3
-1

很经典的广搜题,昨天去参加省赛时队友还把这题给打印出来了,足见其经典性。

 //NYOJ21_BFS
#include <stdio.h>
#include <string.h>
#include <queue>
using std::queue;

struct Node{
	int v[3];
	int steps;
} init, targ;
bool vis[100][100][100];

bool del(Node &cup, int start, int end){
	if(cup.v[start] && cup.v[end] != init.v[end]){ //能倒水
		int sum = cup.v[start] + cup.v[end];
		if(sum >= init.v[end]) cup.v[end] = init.v[end];
		else cup.v[end] = sum;
		cup.v[start] = sum - cup.v[end];
		if(!vis[cup.v[0]][cup.v[1]][cup.v[2]])
			return vis[cup.v[0]][cup.v[1]][cup.v[2]] = true;			
	}
	return false;
}

int BFS(){
	Node cup = {init.v[0], 0, 0, 0}, temp;
	queue<Node> Q;
	memset(vis, 0, sizeof(vis));
	
	vis[init.v[0]][0][0] = true;
	Q.push(cup);
	
	while(!Q.empty()){
		temp = cup = Q.front();
		if(temp.v[0] == targ.v[0] && temp.v[1] == targ.v[1]
			&& temp.v[2] == targ.v[2]) return temp.steps;
		Q.pop();
		for(int i = 0; i < 3; ++i){			
			for(int j = 0; j < 3; ++j){
				temp = cup;
				if(i != j && del(temp, i, j)){					
					++temp.steps;					
					Q.push(temp);		
				}
			}
		}
	}
	return -1;
}

int main(){
	int t;
	scanf("%d", &t);
	while(t--){
		scanf("%d%d%d", init.v, init.v + 1, init.v + 2);
		scanf("%d%d%d", targ.v, targ.v + 1, targ.v + 2);
		printf("%d\n", BFS());
	}
	return 0;
}        


PX4飞控与MAVROS实战:从零搭建无人机ROS通信环境(附常见报错解决) 本文详细介绍了如何从零搭建PX4飞控与ROS的通信环境,重点解析了MAVROS的安装、硬件连接、串口权限配置以及坐标系转换等核心步骤。针对GeographicLib数据下载失败、串口权限不足等常见报错提供了实用解决方案,并附有Offboard模式控制的代码示例,帮助开发者快速建立稳定的无人机ROS开发环境。 阅读详情

相关推荐

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5722

NYOJ 21 三个水杯bfs

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三个整数V1

x_y_q_的博客 828

《R 语言卡方检验全解析:手写代码实现与详细步骤》卡方检验

卡方检验(Chi-Square Test)是一种常用的统计方法,主要用于检验分类变量之间的独立性或拟合优度。在医学、社会科学等领域中,卡方检验常用于分析两个或多个分类变量之间的关系。以下是卡方检验的全面解析,包括实现代码和手写公式。χ2∑Ei​Oi​−Ei​2​Oi​Ei​dfr−1c−1rcdfk−1k如果卡方统计量大于临界值,或 p 值小于显著性水平(如 0.05),则拒绝原假设。

Mrrunsen的博客 658

NYOJ-21 三个水杯

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。   输入第一行一个整数N(0&lt;N&lt;50)表示N组测试数据接下来每组...

weixin_34113237的博客 340

NYOJ21 三个水杯 (经典问题 bfs)

题目描述: http://acm.nyist.net/JudgeOnline/problem.php?pid=21 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给

机器笨猫 3353

nyoj21三个水杯

三个水杯时间限制:1000 ms  |  内存限制:65535 KB难度:4描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。输入第一行一个整数N(0&lt;N&lt;50)表示N组测试数据接下来每组测试数据有两行,第一行给出三个整数V...

脚踏实地,仰望星空 979

三个水杯 搜索题 bfs

思路:abc三个水杯 一共有六种倒水方式。a-b,a-c ; b-a,b-c;c-d;广搜着6种方式即可。但是得判断杯子里的水放进另外一个杯子放不放的下,另外一个杯子需要多少水,杯子子里有没有水可放。不要忘记目标和初始状态一样那种情况。 三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大

旺旺的博客 1630

NYOJ 21 三个水杯BFS

描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V10)表示三个水杯的体积。 第二行给出三

光明~~~ 2万+

NYOJ-21-三个水杯BFS

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三个整数V1 V

wyjwyl的专栏 533

BFS——NYOJ 21 三个水杯

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

Vector 7044

nyoj21 三个水杯bfs

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

BBHHTT的博客 403

NYOJ 21三个水杯bfs

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

ninesun的博客 344

nyoj21 三个水杯BFS

题目21题目信息运行结果本题排行讨论区 三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组

苏苏爱自由 3747

nyoj 21-三个水杯(BFS)

21-三个水杯 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:18 ...

devon2014的博客 113

nyoj 21三个水杯(搜索)

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB  难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。  输入第一行一个整数N(0  接下来每组测试数据有两行,第一行给出三个整数V

>*,< 261

nyoj 21 三个水杯

三个水杯时间限制:1000 ms  |  内存限制:65535 KB难度:4描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。输入第一行一个整数N(0&lt;N&lt;50)表示N组测试数据接下来每组测试数据有两行,第一行给出三个整数V...

你身后的人 214

ACM之隐式图的遍历---杯子倒水问题

倒水问题: 引例:有装满水的6升的杯子,空的3升杯子和1升杯子,3个杯子都没有刻度; 在不使用道具的情况下,如何称出4升的水呢? 相信聪明的你已经算出来了; (6,0,0)->(3,3,0)->(3,2,1)->(4,3,0); 现在你的任务是解决一个一般性的问题: 设有大中小3个杯子的容量分别是a,b,c最初只有大杯子装满水,其他两个杯子为空; 最少需要多少步才能让某一...

weixin_30905981的博客 516

nyoj 三个水杯

三个水杯时间限制:1000 ms | 内存限制:65535 KB难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0<N<50)N(0<N<50)表示N组测试数据接...

weixin_30767835的博客 197

NYOJ --21--三个水杯

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0 接下来每组测试数据有两行,第一

粥同学的学习笔记 1628

NYoj21 三个水杯

广度优先搜索 BFS(队列)

GuoZLH的博客 2725

nyoj21三个水杯——BFS

三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0&lt; N&lt;50)表示N组测...

zhaohaibo的博客 503

CMW100-5gnr指令手册

CMW100-5gnr指令手册,操作手册

基于Python编程的程序员数学:深入线性代数与微积分设计源码

本项目为《程序员数学:用Python学透线性代数和微积分》设计源码,包含104个文件,涵盖73个Python源文件、17个Jupyter Notebook交互式文档、4个教学图片以及少量其他辅助文件类型。项目旨在通过Python编程语言,深入探讨线性代数与微积分的核心概念,适用于希望掌握程序员必备数学知识的开发者。

上一篇: 【练习】P62
下一篇: NYOJ43 24 Point game 【回溯】
长风Qiu
博客等级 码龄13年 164粉丝 709原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值