当前位置: 首页 > news >正文

第十六届蓝桥杯Java b组(试题C:电池分组)

问题描述:

输入格式: 

 

输出格式: 

 

样例输入: 

2

3

1 2  3

4

1 2  3  4 

样例输出: 

YES

NO 

说明/提示

评测用例规模与约定

  • 对于 30% 的评测用例,1≤T≤10,2≤N≤100,1≤Ai​≤10^3。
  • 对于 100% 的评测用例,1≤T≤10^3,2≤N≤10^3,1≤Ai​≤10^5。

 


 思路:

 根据题目中我们可以知道,要把一组数分成两组,每组至少一个数,要求这两组的异或和相等

样例:{1,2,3} 比如我们让 1,2一组 ,3为一组,这样就把这组数分为了两组,然后我们开始求异或 ( 要转为2进制计算,计算机内应该是以补码的形式进行计算,但是恰巧这个题全是正数,正数原码,反码,补码,都一样)。

第一组:

1 ^ 2 = 0000 0011;

第二组:

3 =  0000 0011;


这两组异或和相等,输出YES,我们还可以发现一个规律就是 分为两组异或和相等的二进制,再次异或和的值为“0”


所以我们直接把一组数一起求异或和,看是否等于0即可解决这题

案例代码:

import java.util.*;
public class Main{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		while(t!=0)
		{
			boolean flag = false;
			int res = 0;
			int n = sc.nextInt();
			int[] arr = new int[n];
			for(int i=0;i<n;i++)
			{
				arr[i] = sc.nextInt();
			}
			for(int i = 0; i < n-1;i++)
			{
				res = arr[i] ^ arr[i+1];
				arr[i+1] = res;
			}
			if(res == 0)
			{
				flag = true;
			}
			if(flag)
			{
				System.out.println("YES");
			}
			else
			{
				System.out.println("NO");
			}
			t--;
		}
	}
}

洛谷提交后:

 

以上仅是本人的思路,并非最后的题解答案,有错误的话欢迎小伙伴提出~ 

http://www.dtcms.com/a/133142.html

相关文章:

  • LabVIEW 程序持续优化
  • [react]Next.js之自适应布局和高清屏幕适配解决方案
  • 2025SQCTF赛题复现
  • 泰勒公式的深入研究
  • 【信息系统项目管理师】高分论文:论信息系统项目的整合管理(旅游景区导游管理平台)
  • Laravel 使用通义灵码 - AI 辅助开发提升效率
  • 【vue】双向绑定
  • git安装(windows)
  • 一文读懂WPF系列之控件模版数据模板
  • LeetCode LCR157 套餐内商品的排列顺序
  • Java基础关键_037_Java 常见新特性
  • 深度解析Redis过期字段清理机制:从源码到集群化实践 (二)
  • OSPF单区域配置实验
  • 软件测试之单元测试详解
  • [LVGL] 使用lvgl自带的链表函数
  • CSV文件中的中文乱码--UTF-8 with BOM
  • DeepSeek 与开源:肥沃土壤孕育 AI 硕果
  • react/vue中前端多图片展示页面优化图片加载速度的五种方案
  • 高德地图 JS-SDK 实现教程
  • LFM调制信号分类与检测识别
  • electron-builder参数详解
  • 医用多功能压力检测仪,精密医疗的守护者
  • 04 GE - 钳制属性,等级
  • 面向MoE和推理模型时代:阿里云大数据AI产品升级发布
  • k8s中缩放pod规格
  • 微信小程序-下拉滚动加载数据
  • (2025亲测可用)Chatbox多端一键配置Claude/GPT/DeepSeek-网页端配置
  • XDocument和XmlDocument的区别及用法
  • Java 正则表达式综合实战:URL 匹配与源码解析
  • 详细解读TypeScript中 declare 关键字