202006-2 稀疏向量
试题编号: 202006-2
试题名称: 稀疏向量
时间限制: 2.0s
内存限制: 512.0MB
问题描述:
思路:
最开始用结构体写的,思路和用map差不多,但是一直运行超时,然后换用map写的最后满分过了。输入第一个向量将值和下标都存到map里,输入第二个向量时进行判断,如果输入的下标在map里的值不为零,说明该位置两个向量都有值,将两个值的积累加到和里。
还需要注意的是最后输出的总和在最开始定义时要定义为long long型,long int不足以满足数据长度,只能得到60分。
AC满分代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false); //提高cin、cout的速度
int n, a, b;
cin >> n >> a >> b;
map<int, int> mp;
int id, val;
long long result = 0; //long long型
int i;
for (i = 1; i <= a; i++) {
cin >> id >> val;
mp[id] = val;
}
for (i = 1; i <= b; i++) {
cin >> id >> val;
if (mp[id])
result += mp[id] * val;
}
cout << result << endl;
}