先写了个笨笨的向量,但是一直只有60
#include<iostream>
using namespace std;
int main(){
int n,a,b;
cin>>n>>a>>b;
int u[n];
int v[n];
for(int i=0;i<n;i++){
u[i]=v[i]=0;
}
int x,y;
long long sum=0;
for(int i=0;i<a;i++){
cin>>x>>y;
u[x]=y;
}
for(int i=0;i<b;i++){
cin>>x>>y;
v[x]=y;
}
for(int i=0;i<n;i++){
if((u[i]==0)||(v[i]==0)){
continue;
}
else{
sum+=(u[i]*v[i]);
}
}
cout<<sum<<endl;
}
然后换了pair,100通了(虽然但是为什么上面的只能60呢)
看了这个链接的内容的思路,也很简单
#include<iostream>
using namespace std;
int main(){
int n,a,b;
cin>>n>>a>>b;
pair<int,int> u[a];
pair<int,int> v[b];
long long sum=0;
for(int i=0;i<a;i++){
cin>>u[i].first>>u[i].second;
}
for(int i=0;i<b;i++){
cin>>v[i].first>>v[i].second;
}
int x=0,y=0;
while(x<a&&y<b){
if(u[x].first==v[y].first){
sum+=(u[x].second*v[y].second);
x++;
y++;
}
else if(u[x].first>v[y].first){
y++;
}
else{
x++;
}
}
cout<<sum<<endl;
}