异或哈希(求区间内所有的数的出现的次数是否为偶数)

Example

InputCopy

2

3 3

1 2 2

1 2

1 3

2 3

5 3

2 1 2 1 1

1 2

1 3

4 5

OutputCopy

NO

NO

YES

NO

NO

YES

思路:异或哈希模板

AC代码:

cpp 复制代码
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;

typedef pair<ll, ll>PII;
const int N = 2e6 + 10;
const ll MOD = 1e9 + 7;
const ll INF = 1e18;

//生成随机数
mt19937_64 rng(std::chrono::steady_clock::now().time_since_epoch().count());
ll v[N];

int main()
{
	for(int i = 1; i <= N; i ++)
	{
		v[i] = rng();
	}//生成随机数为了判断区间内所有的数是否都出现偶数次
    int t;
	cin >> t;
	while(t --){
		//相同的时候不会输游戏即打成平局
		int n, q;
		cin >> n >> q;
		vector<ll>s(n + 10);
		for(int i = 1; i <= n; i ++)
		{
			int x;
			cin >> x;
			s[i] = s[i - 1] ^ v[x];
		}
		while(q --){
		    int l, r;
			cin >> l >> r;
			if(s[r] - s[l - 1] != 0) cout << "NO" << endl;
			else cout << "YES" << endl;
		}
	}
	return 0;
}
相关推荐
DanyHope1 天前
LeetCode 128. 最长连续序列:O (n) 时间的哈希集合 + 剪枝解法全解析
前端·leetcode·哈希算法·剪枝
元亓亓亓1 天前
LeetCode热题100--763. 划分字母区间--中等
算法·leetcode·职场和发展
鹿角片ljp1 天前
力扣206.反转链表-双指针法(推荐)
算法·leetcode·链表
智航GIS1 天前
ArcGIS大师之路500技---037普通克里金VS泛克里金
人工智能·算法·arcgis
晨晖21 天前
循环队列:出队
算法
LYFlied1 天前
【每日算法】LeetCode 70. 爬楼梯:从递归到动态规划的思维演进
算法·leetcode·面试·职场和发展·动态规划
最晚的py1 天前
聚类的评估方法
人工智能·算法·机器学习
业精于勤的牙1 天前
浅谈:算法中的斐波那契数(五)
算法·leetcode·职场和发展
液态不合群1 天前
查找算法详解
java·数据结构·算法
代码游侠1 天前
学习笔记——Linux进程间通信(IPC)
linux·运维·笔记·学习·算法