如果我在c++程序中使用2 map,并且我用于在2个不同操作中存储其频率的键值是相同的怎么办?


#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define rep(i,a,b) for(ll i=a;i<b;i++)

void calculation(ll n,ll x)
{

ll i,arr[n],k,max=INT_MIN,j=0,min=INT_MAX;
map<ll,ll> m1,m2;

rep(i,0,n)
{
cin>>arr[i];
m1[arr[i]]++;


}
if(x==0)
{
rep(i,0,n)
{
if(m1[arr[i]]>max)
max=m1[arr[i]];
}
cout<<max<<" 0n";
}
else{
rep(i,0,n)
{
if(m1[arr[i]]+m2[arr[i]]>=max && m2[arr[i]]<min){
max=m1[arr[i]]+m2[arr[i]];
min=m2[arr[i]];}
}

cout<<max<<" "<<min<<"n";
}
}
int main ()
{
ll t,n,x;
cin>>t;
while(t--)
{
cin>>n>>x;
calculation(n,x);
}
return 0;
}

在上面的代码中,我用于映射,一个用于存储数字的初始频率,第二个用于存储数字xor 'X'的频率。这个问题来自codechef 9月的长期挑战和给出错误的答案。我不是在问答案,而是想理清我对地图的概念。如果有人想尝试,我也提供了问题的链接。https://www.codechef.com/SEPT21C/problems/PALINT如果键是相同的,那么如果在map 2中加1,是否在map 1中也加1。

请帮忙!我被困在这里了。

答案是否定的。这两张地图互不相同。它们不共享记忆。您应该打印两个映射的值或键的地址以获得更多详细信息。

最新更新