NYOJ21 三个水杯

【RF】Receiver Function接收函数:从理论到实践的深度解析 本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。 阅读详情


三个水杯

时间限制: 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



import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Scanner;
/**
 * 广度优先搜索
 * @author Administrator
 *
 */
public class n021_三个水杯 {
	
	public static void main(String[] args) {
	
		int[][] nn=getInput();
		for(int i=0;i<nn.length;i++){
			System.out.println(f(nn[i]));
		}
		
	}
	
	public static int f(int[] nn){
		//倒水次数
		int num=0;
		//杯子体积
		int[] volumes=new int[3];
		//目标状态
		int[] goal=new int[3];
		//当前状态
		int[] state=new int[3];
		//下一次倒水可能出现的所有状态
		ArrayList<int[]> temp=new ArrayList<int[]>();
		//历史记录
		ArrayList<int[]> history=new ArrayList<int[]>();
		//初始化
		for(int i=0;i<goal.length;i++){
			volumes[i]=nn[i];
			goal[i]=nn[i+3];
		}
		state[0]=volumes[0];
		temp.add(state.clone());
		history.add(state.clone());
		//
		while(temp.size()>0){
			
			if(check(temp,goal)){
				return num;
			}
			ArrayList<int[]> temp_n=new ArrayList<int[]>();
			Iterator<int[]> it=temp.iterator();
			while(it.hasNext()){
				state=it.next();
				for(int i=0;i<3;i++){
					if(state[i]==0) continue;
					for(int j=0;j<3;j++){
						if(j==i||state[j]==volumes[j]) continue;
						int[] t=state.clone();
						if(t[i]-volumes[j]+t[j]>0){
							t[i]=t[i]-volumes[j]+t[j];
							t[j]=volumes[j];
						}else{
							t[j]+=t[i];
							t[i]=0;
						}
						if(!check(history,t)){
							temp_n.add(t);
							history.add(t);
						}
					}
				}
			}
			temp=temp_n;
			num++;
		}
	
		return -1;
	}
	
	/**
	 * 是否存在目标状态
	 * @param temp 状态的集合 
	 * @param goal 目标状态
	 * @return 
	 */
	public static boolean check(ArrayList<int[]> temp,int[] goal){
		for(int i=0;i<temp.size();i++){
			if(Arrays.equals(temp.get(i), goal))
				return true;
		}
		return false;
	}
	/**
	 * 接收输入
	 */
	public static int[][] getInput(){
		
		Scanner scan=new Scanner(System.in);
		int N=scan.nextInt();
		int[][] nn=new int[N][6];
		//0 1 2  分别存放水杯容量
		//3 4 5  分别存放目标状态
		for(int i=0;i<N;i++){
			for(int j=0;j<nn[i].length;j++){
				nn[i][j]=scan.nextInt();
			}
		}
		return nn;
	}
}

原题链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=21

QT C++ AI棉花智能变量灌溉工上位机(信创完整版) 北斗履带灌溉机器人/田间分区电磁阀基站 → 多层土壤温湿度/盐分EC传感器实时采集墒情 → 双目AI视觉扫描棉田长势、病苗分布 → AI融合**生育期+土壤墒情+盐分+棉株长势**计算变量灌溉定额、水肥配比、灌溉时长 → 分区电磁阀/变频水泵变量供水,病弱苗地块减量、干旱地块增量;墒情、盐分、长势多因子闭环修正灌水量;多层土壤含水率(0–10/20–40/40–80cm)、土壤EC盐分、土壤温度、空气温湿度、蒸发量、北斗地块坐标、管道水压、水肥罐液位、分区流量计、水泵电机负载、滴灌带压力反馈。 阅读详情

相关推荐

xHCI驱动学习(1) 核心数据结构

虽然Linux内核拥有C语言构建的身体,但它骨子里散发的是面向对象的气质,这一个个的对象就是struct。面对一个内核模块的时候,首先要找出关键的struct和它们之间的关系,才能摸清代码的骨骼脉络。今天来理清USB xHCI相关的数据结构类型usb_hcd、xhci_hcd、hc_driver和全局变量xhci_pci_driver、xhci_hc_driver、xhci_pci_hc_driver之间的关系。

1万+

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

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

机器笨猫 3362

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 243

nyoj 21 三个水杯

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

你身后的人 214

MacOS下Mixly 2.0安装避坑指南:从Java环境到终端权限全解析

本文详细解析了在MacOS系统上安装Mixly 2.0时可能遇到的核心问题与解决方案。针对Java环境版本不兼容、MacOS Gatekeeper安全机制拦截以及终端权限不足三大常见障碍,提供了从检查并配置正确Java版本、安全设置绕过到彻底解决应用内部工具链权限的完整避坑指南,帮助用户顺利完成安装并正常使用。

weixin_29231725的博客 504

在 Eclipse 里快速用上 SAP Joule:ABAP 开发者的 AI 助手上手指南

本文介绍了SAP Joule for developers如何集成在ABAP开发工具中,为开发者提供AI辅助能力。主要内容包括: Joule作为ADT的增强层,直接嵌入开发流程,支持在项目资源管理器、代码编辑器等场景下通过上下文菜单调用AI功能。 核心使用方式:打开Joule视图后,可在开发对象、代码片段等上下文中使用自然语言交互,请求解释、生成测试或获取示例代码。 重点功能: Explain:解释现有代码逻辑,降低理解成本 ABAP Unit测试生成:快速创建与上下文相关的测试用例 支持在传输管理器等完整

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

nyoj21三个水杯

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

脚踏实地,仰望星空 979

基于YOLO26深度学习框架的智能停车场管理系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的智能停车场管理系统实现方法。系统采用CSPDarknet53作为主干网络,结合特征金字塔和注意力机制提升检测性能。通过数据预处理、模型训练和停车分析三个主要模块,实现了车位占用检测、车辆类型识别等功能。实验结果表明,该方法在检测精度和速度方面表现优异,为智能停车场管理提供了有效的技术解决方案。

一键难忘的博客 571

NYOJ-21 三个水杯

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

weixin_34113237的博客 344

YOLO26改进策略【多YAML融合】| UNetV2 + BiFormer + WIoU

Wise-IoU是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。

Limiiiing的博客 221

基于STM32、HAL库的ATMXT1066TD触摸屏控制器驱动程序设计

0x11) // 0x11是ATMXT1066的家族ID。// 最多支持10点触摸。// 足够存储10点触摸数据。

corlin6688的博客 164

NYoj21 三个水杯

广度优先搜索 BFS(队列)

GuoZLH的博客 2730

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NYOJ 21 三个水杯(BFS)

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

光明~~~ 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NYOJ 21-三个水杯

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

云淡风清 746

NYOJ-21-三个水杯【BFS】

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

wyjwyl的专栏 537

BFS——NYOJ 21 三个水杯

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

Vector 7049

nyoj21 三个水杯倒水

附带图分析...希望对刚做搜索的人有帮助....

The_b-dn 2293

nyoj 题目21 三个水杯

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

aling1199的博客 245

NYOJ 21 三个水杯

bfs题,用数组模拟水杯的状态,尝试每一种可能的状态,如果找到就返回,详解见代码注释: 1 2 #include <cstdio> 3 #include <iostream> 4 #include <queue> 5 #include <cstring> 6 #include <algorithm&gt...

dizhuo0219的博客 136

nyoj21 三个水杯

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

H优快云 567

NYOJ 21题 三个水杯

http://acm.nyist.net/JudgeOnline/problem.php?pid=21 这是一道广搜的题目, 也是我做的第二道广搜题目。 广搜要记住两点: 1.扩展的节点 2.扩展规则 构建解答树, 用队列实现。 1.三个水杯,是大小不一的,初始状态,0号杯子满的,1号2号是空的。 2.0->1, 0->2;   1->0, 1->2;   2->0, 2->1;

静-静的雪 800

NYOJ21-三个水杯

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

伪Acmer! 525
上一篇: NYOJ2 括号配对问题
下一篇: 横向打印二叉树
云一样飘过
博客等级 码龄14年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值