社区讨论
蒟蒻求助
P1366有序表的合并参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjd8ltj
- 此快照首次捕获于
- 2025/11/04 00:40 4 个月前
- 此快照最后确认于
- 2025/11/04 00:40 4 个月前
CPP
#include<iostream>
#include<cstring>
#define ull unsigned long long
using namespace std;
ull a[10000001],b[10000001];
int n,m,ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
while(T--)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
ans=0;
cin >> n >> m;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int i=1;i<=m;i++)
{
cin >> b[i];
}
for(int i=1,j=1;i<=n&&j<=m;i++)
{
int t=j;
while(a[i]==b[t])
{
t++;
}
// cout << (t-j) << '\n';
if(ans==0)
{
ans=(t-j);
}
else
{
ans^=(t-j);
}
j=t;
}
cout << ans << '\n';
// cout << '\n';
}
return 0;
}
为什么这份代码会MLE,而改成下面这样就过了?
CPP#include<iostream>
#include<cstring>
#define ull unsigned long long
using namespace std;
ull a[10000001],b[10000001];
int n,m,ans;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
while(T--)
{
ans=0;
cin >> n >> m;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int i=1;i<=m;i++)
{
cin >> b[i];
}
int num=0,i=1,j=1;
while(i<=n&&j<=m)
{
if(a[i]==b[j])
{
num++;
j++;
}
else
{
ans^=num;
if(a[i]<b[j])
i++;
else
j++;
num=0;
}
}
ans^=num;
cout << ans << '\n';
// cout << '\n';
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...