学到了新知识点:vector里的pair用法:
/*pair打包两个整型,first和second访问数据*/
vector < pair<int,int> > u,v;//vector定义
我的代码:只有60分,运行也正确
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n, a, b;
cin >> n >> a >> b;
int* u = new int[n];
int* v = new int[n];
for (long i = 0; i < n; i++)
{
u[i] = 0;
v[i] = 0;
}
for (long m = 0; m< a; m++) {
long aa, bb;
cin >> aa >> bb;
u[aa-1] = bb;
}
for (long j = 0; j < b; j++) {
long cc, dd;
cin >> cc >> dd;
v[cc-1] = dd;
}
long long int sum = 0;
for (long k = 0; k < n; k++)
sum += (long long int)u[k] * (long long int)v[k];
cout << sum;
return 0;
}
参考了别人的:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,a,b;
cin>>n>>a>>b;
/*pair打包两个整型,first和second访问数据*/
vector < pair<int,int> > u,v;//vector定义
int index,value;
for(int i=0;i<a+b;i++)
{
cin>>index>>value;
if(i<a)
u.push_back({index,value});//vector的基本入栈用法
else
v.push_back({index,value});
}
long long int res=0;//求内积相乘可能超过int范围
int i=0,j=0;
while(i<a&&j<b)
{
if(u[i].first==v[j].first)
{
res+=u[i].second*v[j].second;
i++;
j++;
}
else if(u[i].first<v[j].first)
i++;
else
j++;
}
cout<<res;
return 0;
}
发现自己的没有符合题目要求:
题目讲的是
提到了要用(index,value)的形式,我们就需要构造这样的形式