社区讨论
对于此题的新思路
P1366有序表的合并参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lrqhbxxr
- 此快照首次捕获于
- 2024/01/23 22:56 2 年前
- 此快照最后确认于
- 2024/01/24 10:18 2 年前
用 unordered_map (map 要超时)来统计 出现的次数,然后在看 数组里的数在这里面的值的异或和。
感觉时间没问题 unordered_map 查询修改都 O(1),所以时间没问题。
空间也没问题吧, 数组以及 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 条回复,欢迎继续交流。
正在加载回复...