【CCF 2020 6】2-稀疏向量

题目分析:求两个维度相同的稀疏向量的内积。

代码分析:只找两向量中相同的非零维度。代码只有60分。

C++代码

#include 
#include 
#include 
using namespace std;
const int N = 5e5 + 10;
struct Vector{
 int index;
 int val;
};
Vector a[N];
int main()
{
 int n, a1, b1,sum=0;
 map<int,int> v;
 cin>>n>>a1>>b1;
 for(int t=0; t<a1; t++)
  scanf("%d %d",&a[t].index, &a[t].val);
    
for(int t=0; t<b1; t++)
 {
     int index, val;
     scanf("%d %d",&index, &val);
     v.insert(make_pair(index, val));
 }
   
 map<int,int>::iterator iter;
 for(int i=0; i<a1; i++)
 {
   iter = v.find(a[i].index);
  
   if(iter != v.end())
     sum += iter->second * a[i].val;
 } 
 cout<<sum<<endl;
 return 0;
}

你可能感兴趣的:(CCF,CSP认证)