代码感悟:
1、 本题目使用了unordered_map<>
,但是题目要求输出的顺序必须为指数逆序输出,所以必须对map进行排序,但是unordered_map<>不能使用sort()进行排序,所以对他的排序方法是将该map放入一个vector
容器中,对vector<>进行排序
代码:
#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>
using namespace std;
unordered_map<int,double>ans1;
typedef pair<int,double>pii;
int n,m;
bool cmp(pii a,pii b){
return a.first>b.first;
}
int main(){
cin>>n;
int x;//指数
double y;//系数
for(int i=0;i<n;i++){
cin>>x>>y;
ans1[x]=y;
}
cin>>m;
for(int i=0;i<m;i++){
cin>>x>>y;
ans1[x]+=y;
}
int p=ans1.size();
vector<pii>res;
for(auto &t:ans1){
if(t.second==0){
p--;
continue;
}
res.push_back({t.first,t.second});
}
sort(res.begin(),res.end(),cmp);
cout<<p;
for(auto &t:res){
printf(" %d %.1f",t.first,t.second);
}
return 0;
}