对于此题的新思路
查看原帖
对于此题的新思路
538683
Enoch006楼主2024/1/23 22:54

用 unordered_map (map 要超时)来统计 bib_i 出现的次数,然后在看 aa 数组里的数在这里面的值的异或和。

感觉时间没问题 unordered_map 查询修改都 O(1),所以时间没问题。

空间也没问题吧,aa 数组以及 unordered_map 总共加的值也最多每组数据1e7。

但是我实现的时候空间不是MLE就是RE让我十分伤心。

另外如果这个办法可行求各位大佬帮调一下代码吧,谢谢你们!!!

#include <bits/stdc++.h>
#define int unsigned long long
#define maxm 10000005
#define maxn 1005
#define inf 0x3f3f3f3f3f3f
using namespace std;
int t,n,m,sum;
int a[maxm];
unordered_map<int,int>q;
bool flag;
signed main(){
	//freopen("in.in","r",stdin);
	//freopen("wrong.out","w",stdout); 
	std::ios::sync_with_stdio(false);
	cin>>t;
	while(t--){
		q.clear();
		flag=false;
		sum=2;
		cin>>n>>m;
		for(int i=1;i<=n;i++)cin>>a[i]; 
		for(int i=1;i<=m;i++){
			int x;
			cin>>x;
			q[x]++;
		}
		for(int i=1;i<=n;i++){	
			if(q.find(a[i])==q.end())continue;
			if(flag==false)sum=q[a[i]],flag=true;
			else sum^=q[a[i]];
		}	
		cout<<sum<<"\n";
	}
    return 0;
}
2024/1/23 22:54
加载中...