试题编号 | 202006-2 |
试题名称 | 稀疏向量 |
时间限制 | 2.0s |
内存限制 | 512.0MB |
#include<iostream>
using namespace std;
int main()
{
int n, a, b,index,value;
long long int out=0;
int aa[100] = {0}, bb[100] = {0};
cin >> n >> a >> b;
for (int i = 1; i <=a; i++)
{
cin >> index >> value;
aa[index] = value;
}
for (int i = 1; i <= b; i++)
{
cin >> index >> value;
bb[index] = value;
}
for (int i = 1; i <= n; i++)
{
if (aa[i] != 0 && bb[i] != 0)
out += aa[i] * bb[i];
}
cout << out << endl;
return 0;
}
#include<vector>
using namespace std;
int n;
int a, b;
long long ans;//使用long long
vector<pair<int, int>> u, v;
int main()
{
scanf("%d%d%d", &n, &a, &b);
int id, val;
for (int i = 0; i < a; i++)
{
scanf("%d%d", &id, &val);
u.push_back({ id, val });
}
for (int i = 0; i < b; i++)
{
scanf("%d%d", &id, &val);
v.push_back({ id, val });
}
int i = 0, j = 0;
while (i < a&&j < b)
{
if (u[i].first == v[j].first)//.first存的是id,.second存的是val
{
ans += u[i].second*v[j].second;
i++, j++;
}
else if (u[i].first > v[j].first){
j++;
}
else{
i++;
}
}
printf("%lld\n", ans);
return 0;
}