题解 | 求两个多项式的和
#include <iostream> #include <map> using namespace std; map<int, int, greater<int>> mp; //次数, 系数 int main() { int n, m; cin >> n; for (int i = 0; i < n; i ++) { int a, b; cin >> a >> b; mp[b] = a; } cin >> m; for (int i = 0; i < m; i ++) { int a, b; cin >> a >> b; if (mp.count(b) == 0) mp[b] = a; else mp[b] += a; } for (auto i : mp) { if (i.second != 0) cout << i.second << ' ' << i.first << ' '; } }
map存一下,然后把全部的都加进去,然后就结束了,注意,我们要的排序结果是键的大到小,所以用greater修正