题目大意
给出一个长度为
n
n
n 的序列
a
a
a,和
m
m
m 次操作
对于每次操作,给出
x
,
y
x,y
x,y,并将
一道模拟题,可以发现 a i a_i ai 的值域范围是 [ 1 , 1 0 5 ] [1,10^5] [1,105],开一个桶记录每一个值在 a a a 中出现的次数,并按题意模拟即可
#include<cstdio>
#include<iostream>
using namespace std;
const long long Maxn=100000+20;
long long n,m;
long long a[Maxn],c[Maxn];
int main()
{
// freopen("in.txt","r",stdin);
scanf("%lld",&n);
long long tot=0;
for(long long i=1;i<=n;++i)
{
scanf("%lld",&a[i]);
++c[a[i]],tot+=a[i];
}
scanf("%lld",&m);
while(m--)
{
long long x,y;
scanf("%lld%lld",&x,&y);
tot=tot-(c[x]*x)+c[x]*y;
c[y]+=c[x],c[x]=0;
printf("%lld\n",tot);
}
return 0;
}