当前位置: 首页 > 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--;
		}
	}
}

洛谷提交后:

 

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

相关文章:

  • 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调制信号分类与检测识别
  • 兰州大学教授安成邦加盟复旦大学中国历史地理研究所
  • “救护车”半路加价?陕西卫健委已介入,记者调查:黑救护车挤占市场
  • 李公明谈“全球南方”与美术馆
  • 牛市早报|中美经贸高层会谈达成重要共识,取得实质性进展
  • 默茨首访聚焦欧洲,欲推欧洲防务自主
  • 新华时评:中国维护国际经贸秩序的立场坚定不移