社区讨论

对于此题的新思路

P1366有序表的合并参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lrqhbxxr
此快照首次捕获于
2024/01/23 22:56
2 年前
此快照最后确认于
2024/01/24 10:18
2 年前
查看原帖
unordered_map (map 要超时)来统计 bib_i 出现的次数,然后在看 aa 数组里的数在这里面的值的异或和。
感觉时间没问题 unordered_map 查询修改都 O(1),所以时间没问题。
空间也没问题吧,aa 数组以及 unordered_map 总共加的值也最多每组数据1e7。
但是我实现的时候空间不是MLE就是RE让我十分伤心。
另外如果这个办法可行求各位大佬帮调一下代码吧,谢谢你们!!!
CPP
#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;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...