解题思路:
寻找两个向量中相同位置的数,将其相乘,最后求和即可
(利用map查找)
AC代码:
#include<iostream> #include<map> using namespace std; int main() { //开始60分,运行超时 //提速,使cin与cout的速度与scanf printf一样,减少运算时间 //其次应注意求和的sum用long long int ios::sync_with_stdio(false); int n,a,b; cin>>n>>a>>b; map<int,int>m; long long int sum=0; int d1,d2; for(int i=0;i<a;i++) { cin>>d1>>d2; m.insert(pair<int,int>(d1,d2)); } map<int,int>::iterator iter; for(int i=0;i<b;i++) { cin>>d1>>d2; iter=m.find(d1);//查找相关位置是否有非零数 if(iter!=m.end()) { sum+=iter->second*d2; } } cout<<sum<<endl; return 0; }