题目
分析
本题需要计算的是两个n维向量的内积,只需计算两者对应的稀疏向量index相同的分量乘积,然后累加就可以了。
- 向量的一个分量包含index和value,使用struct来存储比较方便。
- n<=109,a,b<=5 * 105,|ui| * |vi|<=1012 * 5 * 105=5 * 1017。所以,n,a,b均选择int类型存储,最后结果要用long long int存储。
- 判断index相等时使用两重for循环暴力求解会运行超时。应该先按维数对index排序,然后再交叉比较(详看代码)。
AC代码
#include<iostream>
#include<algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct vector
{
int index;
int value;
};
bool