题目 3313: 蓝桥杯2025年第十六届省赛真题-电池分组

题目 3313: 蓝桥杯2025年第十六届省赛真题-电池分组

时间限制: 3s 内存限制: 512MB 提交: 173 解决: 76

题目描述

研究员小蓝受到实验室主任的指示,需要对实验室新研发的 N 个新型能量 电池进行分组实验。这 N 个能量电池的能量值分别用 A1, A2, . . . , AN 表示,每个 能量值都是一个整数。为了保证实验的安全性,小蓝需要将这 N 个能量电池分 成两组,使得这两组能量电池的能量值异或和相等。

能量值的异或和计算方法如下:对于一个集合 S,其异或和等于集合中所 有元素的按位异或结果。例如,集合 {1, 2, 3} 的异或和为 1 ⊕ 2 ⊕ 3 = 0,其中 ⊕ 表示异或运算。

现在,小蓝想知道,这 N 个能量电池能否分成两组,使得这两组能量电池 的能量值异或和相等。注意,每组至少包含一个能量电池。

请你帮帮他!

输入格式

输入的第一行包含一个整数 T ,表示测试用例的数量。

每个测试用例占两行:

第一行包含一个整数 N,表示能量电池的数量。

第二行包含 N 个整数 A1, A2, . . . , AN,表示每个能量电池的能量值。

输出格式

对于每个测试用例,输出一行。如果可以将能量电池分成两组,使得这两 组能量电池的能量值异或和相等,则输出 "YES";否则,输出 "NO"。

样例输入复制

2

3

1 2 3

4

1 2 3 4

样例输出复制

YES

NO

提示

对于 30% 的评测用例,1 ≤ T ≤ 10,2 ≤ N ≤ 100,1 ≤ Ai ≤ 103。

对于 100% 的评测用例,1 ≤ T ≤ 103,2 ≤ N ≤ 103,1 ≤ Ai ≤ 105。

1.分析

2.代码

cpp 复制代码
#include<iostream>
using namespace std;
const int MAX = 1e5 + 10;
typedef long long LL;
int T,n;
int main() {
    cin >> T;
    while (T--) {
        cin >> n;
        int t=0, re = 0,num=0;
        int a[100000] = { 0 };
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            re = re ^ a[i];
        }
        for (int i = 0; i < n; i++) {
            t = t ^ a[i];
            if (t == re) {
                num++;
                t = 0;
            }
        }
        if(re==0) cout << "YES" << endl;
        else if (num >= 3&&t==0) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}
相关推荐
理智的灰太狼8 小时前
题目 3342: 蓝桥杯2025年第十六届省赛真题-红黑树
职场和发展·蓝桥杯
qq_195551699 小时前
代码随想录60期day50
算法·leetcode·职场和发展
小羊在奋斗13 小时前
【LeetCode 热题 100】打家劫舍 / 零钱兑换 / 单词拆分 / 乘积最大子数组 / 最长有效括号
算法·leetcode·职场和发展
是乐谷14 小时前
把数据库做得能扩展:Aurora DSQL 的故事
数据库·人工智能·python·程序人生·面试·职场和发展
独行soc14 小时前
2025年渗透测试面试题总结-匿名[校招]安全服务工程师(题目+回答)
linux·python·安全·web安全·面试·职场和发展·渗透测试
客卿12316 小时前
力扣100题---字母异位词分组
算法·leetcode·职场和发展
黑不拉几的小白兔19 小时前
第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
c语言·python·蓝桥杯
之之为知知20 小时前
数学笔记三:特殊矩阵
笔记·学习·线性代数·算法·职场和发展·矩阵·职场发展
之之为知知20 小时前
数学笔记一:标量、向量和矩阵基本概念辨析
人工智能·笔记·线性代数·数学·职场和发展·矩阵·编程基础