思路:
匹配到相同维度进行操作即可;
60分代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=5e5+10;
int main(){
ll n,c,v,x,y;cin>>n>>c>>v;
ll sum=0;
int a[N]={0};
for(ll i=0;i<c;i++){
cin>>x>>y;
a[x]=y;
}
for(ll i=0;i<v;i++){
cin>>x>>y;
if(a[x]!=0){
sum+=a[x]*y;
}
}
cout<<sum;
return 0;
}
问题:负数未考虑
100分代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ll n,c,v,x,y;cin>>n>>c>>v;
ll sum=0;
map<ll,ll> a;
for(ll i=0;i<c;i++){
cin>>x>>y;
a[x]=y;
}
for(ll i=0;i<v;i++){
cin>>x>>y;
if(a[x]!=0){
sum+=a[x]*y;
}
}
cout<<sum;
return 0;
}
缺点:是我截至目前看到的最拉的AC代码了,内存达到了39.6MB,时间也是惊人的1.593s