CCF真题
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<climits>
#include<cstdbool>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,a,b;
cin>>n>>a>>b;
vector<pair<int,int>>u;
vector<pair<int,int>>v;
long long int ans=0;
int x,y;
for(int i=0; i<a; i++)
{
cin>>x>>y;
u.push_back(make_pair(x,y));
}
for(int i=0; i<b; i++)
{
cin>>x>>y;
v.push_back(make_pair(x,y));
}
int i=0,j=0;
while(i<a&&j<b)
{
if(u[i].first==v[j].first)
{
ans=ans+u[i].second*v[j].second;
i++,j++;
}
else if(u[i].first>v[j].first)
j++;
else
i++;
}
cout<<ans;
return 0;
}
不明白为什么我用STL还超时了!!!
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<climits>
#include<cstdbool>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,a,b;
cin>>n>>a>>b;
map<int,int>m;
long long int ans=0;
int x,y;
for(int i=0;i<a;i++)
{
cin>>x>>y;
m[x]=y;
}
for(int i=0;i<b;i++)
{
cin>>x>>y;
ans=ans+y*m[x];
}
cout<<ans;
return 0;
}