解题思路:

  寻找两个向量中相同位置的数,将其相乘,最后求和即可

  (利用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;
} 

 

posted on 2020-09-05 15:50  liyou555  阅读(229)  评论(3编辑  收藏  举报