试题编号: 202006-2
试题名称: 稀疏向量
时间限制: 2.0s
内存限制: 512.0MB
问题分析
题目很简单就是注意要开long long 我开始提交的时候就是因为用的int导致只有60分
我用的是数组存储第一个稀疏向量的数据,然后再读入第二个向量数据的同时直接进行计算,代码简单易懂(毕竟我很菜)
#include<bits/stdc++.h>
using namespace std;
long long u[500005][4],n,a,b;
int main()
{
cin>>n>>a>>b;
for(int i = 1; i <= a; i++)
cin>>u[i][1]>>u[i][2];
int i = 1, j = 1;
long long x,y,sum = 0;
for( i = 1; i <= b; i++){
cin>>x>>y;
while(u[j][1] < x && j <= a)//找到第一个 <= 当前x值的数
j++;
if( u[j][1] == x)
sum += u[j++][2]*y;
}
cout<<sum;
return 0;
}