蓝桥杯2022年第十三届决赛真题-小球称重

2023/11/30 8:58:39

题目描述

小蓝有 N 个小球,编号 1 至 N。其中 N − 1 是正品,重量相同;有 1 个是次品,重量比正品轻。

为了找出次品,小蓝已经用天平进行了 M 次称重,并且记录下来每次两边放的小球编号,和称重结果。

请你根据记录,判断还剩下几个小球有次品的嫌疑。

输入格式

第一行包含 2 个整数 N 和 M。

以下包含 M 次称重记录,每个记录占 4 行。

第一行是一个整数 K,表示天平两边各放了 K 个小球。

第二行包含 K 个整数,代表放在天平左边的小球编号。

第三行包含 K 个整数,代表放在天平右边的小球编号。

第四行是一个字符,为 ‘>’, ‘<’, ‘=’ 之一。‘>’ 代表左边比右边重,‘<’ 代表左边比右边轻,‘=’ 代表两边重量相等。

在一次称重中保证每个小球最多出现 1 次。

输出格式

输出一个整数,代表答案。

样例输入

10 2
3
1 2 3
4 5 6
<
2
3 7
8 9

=

样例输出

2

思路:自己写的代码实在不会优化了,还是超时。先说下思路,思路绝对没问题,因为我看见有人用了这个思路过了,除了我没用三元运算符,其他的都差不多。次品小球轻,那么每次对比,那方比较轻,次品就在那一堆里面。一开始会想,遍历一遍,看看轻的那一份有几个小球就行了。但要考虑到放的小球是否之前已经放过,还有假设称重的结果全部都为等于,那得出的结果就是0,这是明显不对的, 最后,假设我们有这样一个样例
10 3
3
1 2 3
4 5 6
<
2
3 7
8 9

=
1
1
10
<

先梳理一下,称重第一次,次品在1 2 3中,称重第二次,等于,都是正品。称重第三次,1是次品。若我们只看轻的那一方的数量,结果为3而不是一,也就是因为第三次称重影响了第一次称重的结果。
因为1轻,所以可以证明第一次称重中 2 3不是次品。
思路清晰了。
代码晾上

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
	static int N =  2000005;
	static int mod = 1000000007;
	static Map<Integer,Integer> map = new HashMap<>();
	static Map<Integer,Integer> map2 = new HashMap<>();
	static int cnt=0;
	static int n=0;
	static int sum=0;
	static boolean flag = false;
	static double res = 9999999;
	static int a[] = new int[N];
	static int b[] = new int[N];
	static int dirx[] ={-1,0,1,0};
	static int diry[] ={0,1,0,-1};
	static Set<Integer> set = new TreeSet<>();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n =sc.nextInt();
		int m=sc.nextInt();
		for(int i=0;i<m;i++){
			int k = sc.nextInt();
			for(int j=0;j<k;j++)
				a[j] = sc.nextInt();
			for(int j=0;j<k;j++)
				b[j] = sc.nextInt();
			String str = sc.next();
			if(str.equals("=")){
				for(int j=0;j<k;j++){
					set.add(a[j]);
					set.add(b[j]);
				}
			}else{
				if(str.equals(">")){
					for(int j=0;j<k;j++){
						set.add(a[j]);
						map.put(b[j], map.getOrDefault(b[j], 0)+1);
					}
				}else{
					for(int j=0;j<k;j++){
						set.add(b[j]);
						map.put(a[j], map.getOrDefault(a[j], 0)+1);
					}
				}
				++cnt;
			}
		}
		for(Map.Entry<Integer,Integer> entry :map.entrySet()){
			if(!set.contains(entry.getKey())&&entry.getValue()==cnt)
				++sum;
		}
		if(sum==0){
			System.out.print(n-set.size());
		}else
		System.out.println(sum);
		sc.close();
	}

	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    StringTokenizer tok;
    String next() {
        while (tok == null || !tok.hasMoreTokens())
            try {
                tok = new StringTokenizer(in.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        return tok.nextToken();
    }

    int nextInt() { return Integer.parseInt(next()); }

    char nextChar() { return next().charAt(0); }
}


http://www.jnnr.cn/a/124502.html

相关文章

CMake中foreach的使用

CMake中的foreach命令为list中的每个值评估一组命令(Evaluate a group of commands for each value in a list),其格式如下&#xff1a;其中<items>是由分号或空格分割的项列表(list of items) foreach(<loop_var> <items>)<commands> endforeach()fo…

前端安全:CSRF、XSS该怎么防御?

近几年随着业务的不断发展&#xff0c;前端随之面临很多安全挑战。我们在日常开发中也需要不断预防和修复安全漏洞。接下来&#xff0c;梳理一些场景的前端安全问题和对应的解决方案。 XSS攻击介绍 XSS是后端的责任&#xff0c;后端应该在用户提交数据的接口对隐私敏感的数据…

计算机网络 - IPv4 常考知识点详解(超详细!)

目录 一、IPv4分组 1、IPv4分组的格式 2、IP数据报分片 3、网络层转发分组的流程 二、IPv4地址与NAT 1、IPv4地址 2、NAT 三、子网划分与子网掩码、CIDR 1、子网划分 2、子网掩码 3、CIDR 四、ARP、DCHP(待补充)、ICMP 1、ARP 2、DCHP 3、ICMP 一、IPv4分组 1、…

【线性代数】四、二次型

第四章 二次型 文章目录第四章 二次型一、二次型定义二、合同变换1.线性变换2.矩阵合同标准型和规范型3.惯性定理三、正定二次型一、二次型定义 如果系数aij全为实数&#xff0c;那么为实二次型。上述二次型展开式可表示用矩阵为 可以看出&#xff0c;二次型矩阵A是一个对称矩…

git push的详细使用

文章目录序格式 &#xff08;很重要&#xff09;常用写法1. 正常写法2.省略:<远程分支名>3.省略<远程主机名>和:<远程分支名>4.省略<远程主机名> <本地分支名>:<远程分支名>序 在使用git push之前&#xff0c;我们最起码要知道本地和远程…

想要成为 Android 高工?那还不来熬夜肝完这份大厂面试真题解析?

Android 程序员想要达到一定的高度&#xff0c;以下这两点必不可缺&#xff1a; 一&#xff0c;熟练掌握了Java或者Kotlin的应用&#xff0c;深入到了各类开源库的研究以及 Android Framework 底层原理 的应用 二&#xff0c;横向与纵向并重&#xff0c;拓宽知识的同能对技术深…

win10 64位 opencv 4.6.0 环境变量设置方法

前言 学习下 opencv&#xff0c;当前最新的版本为 opencv 4.6.0&#xff0c;发布地址为&#xff1a;https://opencv.org/releases/ 直接下载可能会比较的慢&#xff0c;建议使用下载工具下载&#xff0c;如迅雷 github 上 也可以下载 https://github.com/opencv/opencv/relea…

redis(基础 redis缓存)

一&#xff0c;redis基础 目录 1. 数据类型 1.1 字符串1.2 hash1.3 List1.4 Set1.5 sorted set2. jedis操作redis3. 与spring集成 1. 数据类型 1.1 字符串 String是最常用的数据格式&#xff0c;普通的kay-value都归结为此类&#xff0c; value值不仅可以是string&#xff0c…

二、Go基础语法

Go基础语法 1、行分隔符 代码示例 // Println函数会在行末尾自动加上换行符package mainimport "fmt"func main() {fmt.Println("Hello World!")fmt.Println("Println函数会在行末尾自动加上换行符") }查看运行结果 2、注释 单行注释以//开…

基于elementui input完成的输入控件

背景 基于业务需求&#xff0c;产品提出输入交互&#xff0c;element-ui本身不能支持。完整交互如下视频。 IMG大致描述&#xff1a;输入框可输入多条数据&#xff0c;超过一条&#xff0c;则以数量的 n的形式显示&#xff0c;用户可以在输入框中输入&#xff0c;也可以点击右…

VMware三种网络模式详解

VMware三种网络模式 linux重启网络服务命令&#xff1a; service network restart 一、桥接模式 原理&#xff1a;VMware和宿主机&#xff0c;处于同一网段、两者地位平等。&#xff08;无需虚拟网卡&#xff09; 1.1、使用方法 虚拟网络编辑器 虚拟机设置-适配器 上面两…

微积分入门书籍(一)

1、Introductory Calculus For Infants 给宝宝的微积分导论&#xff08;2011.10&#xff09; 2、导数的秘密&#xff08;第二版&#xff09;-2021.01 3、高中数学新体系&#xff1a;导数的秘密&#xff08;2022.03&#xff09; 4、多视角破解高考数学压轴题&#xff08;函数与导…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java招生管理系统2ij21

大部分步骤是 1.确定选题 选题的确定需要查阅大量的资料&#xff0c;要搞清楚自己大概想要研究的方向是什么。可以选择自己感兴趣的学科或者强势的学科进行研究&#xff0c;同时要多和毕业指导老师多交流&#xff0c;征求老师的意见和建议&#xff0c;最后确立选题。计算机专…

英语一和英语二难度差多少?英语二翻译更长为什么说其实更容易?

考研英语一的难度要大于考研英语二的难度&#xff0c;主要难度差在以下七点。 一、英语二单词大纲是5500个左右常用英语词汇以及相关常用词组&#xff0c;英语一会多出百分之三的超纲词。 二、英语一在内容上会使用比英语二更多的长难句。 三、英语二完型文章比英语一完型文章多…

【附源码】Python计算机毕业设计社区老人健康服务跟踪系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

菊风视频能力平台通过浙江省信创适配实验室验证测试

伴随着国家鼓励支持政策的不断出台&#xff0c;“信创”即信息技术应用创新产业作为科技创新的重要领域&#xff0c;逐步开启规模化应用。信创产业由党政信创向金融、电信、能源、交通等行业信创拓展&#xff0c;从政策驱动走向政策市场需求双轮驱动&#xff0c;国内信息技术产…

电商盲返模式的核心玩法

寒冬已至&#xff0c;疫情还是在断断续续的复发&#xff0c;很多城市也受到严重的影响&#xff0c;封城的通告一出&#xff0c;无疑是给不少的实体企业增添了相当大的噩耗打击&#xff0c;这时候更为磨炼实体企业和创业人看待事情的立场&#xff0c;有些人会觉得疫情的袭来什么…

学生HTML个人网页作业作品:HTML绿色的化妆品静态网站(web前端网页制作课作业)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

7-15 计算圆周率(分数 15)

根据下面关系式&#xff0c;求圆周率的值&#xff0c;直到最后一项的值小于给定阈值。 输入格式&#xff1a; 输入在一行中给出小于1的阈值。 输出格式&#xff1a; 在一行中输出满足阈值条件的近似圆周率&#xff0c;输出到小数点后6位。 输入样例&#xff1a; 0.01输出样…

如何使用 Bootstrap 创建一个简单的仪表板

您想从现成的元素创建网站吗&#xff1f;Bootstrap是最流行的CSS框架之一。它允许我们从现成的组件&#xff08;如导航栏或窗体&#xff09;构建漂亮的 UI。Bootstrap 还提供响应式设计&#xff0c;因此&#xff0c;在正确使用网格的同时&#xff0c;您不必为移动视图执行额外的…
最新文章