显然链表合并用set去重,多项式用map 均在stl里
有序链表的归并
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,t; cin>>n>>m;
set<int> s;
for(int i=1;i<=n;i++){
cin>>t;
s.insert(t);
}
for(int i=1;i<=m;i++){
cin>>t;
s.insert(t);
}
cout<<s.size()<<endl;
//set<int>::iterator it;
for(auto it = s.begin(); it != s.end(); it++){
cout << *it << " ";
}
return 0;
}
多项式加法
#include<bits/stdc++.h>
using namespace std;
const int maxn=150;
map<int,int> mp;
int main()
{
int n,m,a,b; cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a>>b;
mp[b]+=a;
}
for(int i=0;i<m;i++){
cin>>a>>b;
mp[b]+=a;
}
int sum=mp.size();
for(auto it=mp.begin();it!=mp.end();it++){
if((it->second)==0){
sum--;
}
}
cout<<sum<<endl;
for(auto it=mp.rbegin();it!=mp.rend();it++){
if((it->second)!=0){
printf("[ %d %d ] ",it->second,it->first);
}
}
return 0;
}
|