稀疏向量
from CCF-CSP 2020-06-2
Time limit:2s
Memory limit:512MB
数据结构里面稀疏矩阵的思想就可以了,找到相同的维度的地方就相乘,然后累加。
ac代码:
#include<iostream>
using namespace std;
int n,a,b;
pair<int,int> p1[500005]; //存储向量1
pair<int,int> p2[500005]; //存储向量2
int main(){
cin>>n>>a>>b;
for(int i = 1;i <= a;++i)
cin>>p1[i].first>>p1[i].second;
for(int i = 1;i <= b;++i)
cin>>p2[i].first>>p2[i].second;
int note1 = 1,note2 = 1;long long sum = 0;
while(note1 <= a && note2 <= b){
if(p1[note1].first == p2[note2].first)
sum += p1[note1].second * p2[note2].second,++note1,++note2;
else if(p1[note1].first < p2[note2].first)
++note1;
else
++note2;
}
cout<<sum;
return 0;
}