稀疏向量
解题思路就是利用map存储数据,然后查找,将对应维度的值相乘累加。
满分代码:
#include <iostream>
#include <map>
using namespace std;
map<int, int> rec1;
map<int, int> rec2;
int main()
{
int n, a, b;
scanf("%d%d%d", &n, &a, &b);
int index, value;
for (int i = 0; i < a; ++i) {
scanf("%d%d", &index, &value);
rec1[index] = value;
}
for (int i = 0; i < b; ++i) {
scanf("%d%d", &index, &value);
rec2[index] = value;
}
long long ans = 0; // 用int结果会溢出
for (auto i = rec1.begin(); i != rec1.end(); ++i) {
index = i->first;
value = i->second;
auto j = rec2.find(index);
if (j != rec2.end()) {
ans += value * j->second;
}
}
cout<<ans<<endl;
return 0;
}