题目大意
有一个数组 A 1 , A 2 , … , A N A_1, A_2, \dots, A_N A1,A2,…,AN。
执行如下 Q Q Q个操作:在第 i i i个操作中,将数组中所有的 B i B_i Bi替换成 C i C_i Ci。输出操作后 A A A中所有数之和(记为 S i S_i Si)。
题解
简单模拟,通过桶模拟过程即可。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll f[100005];
ll n,q;
ll ans=0;
ll a[100005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
ans+=a[i];
f[a[i]]++;
}
cin>>q;
for(int i=1;i<=q;i++){
ll x,y;
scanf("%lld%lld",&x,&y);
ans+=f[x]*(y-x);
f[y]+=f[x];f[x]=0;
printf("%lld\n",ans);
}
return 0;
}