1009 Product of Polynomials(有点麻烦)
解题思路
这道题与之前的加法不同,之前加法可以直接用邻接表,因为之前的指数是不变的,所以直接用一个邻接表就能解决。这道题的难点就在于,乘法中指数会变,系数也会变。
其实真要写起来不难,就是看你怕不怕麻烦,我当时一直不想用PII,我觉得会有更好的方法,但是想不出来,最后再用PII写的,不过调试的过程中由于double漏掉了,调试了有一会,还有就是乘法中指数是相加的,我刚开始还写成乘法了。
ac✅️代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
using namespace std;
vector<pair<int,double>> st;
unordered_map<int,double> ans;
int main()
{
int mx_mi = -1;
for(int i = 1 ; i <= 2; i ++)
{
int k ; cin>>k;
int zhishu ;
double xishu;
if( i == 1 )
{
for(int j = 1 ; j <= k ; j ++)
{
cin>>zhishu>>xishu;
st.push_back({zhishu,xishu});
}
}
if(i == 2)
{
for(int j = 1 ; j <= k ; j ++)
{
cin>>zhishu>>xishu;
for(pair<int,double> x : st)
{
int zhi = x.first ;
double xi = x.second;
ans[zhi + zhishu] += (double)xi * xishu;
mx_mi = max(mx_mi , zhi+zhishu);
}
}
}
}
int cnt = 0;
for(int i = 0 ; i <= mx_mi ; i ++) if(ans[i] != 0 ) cnt ++;
cout<<cnt;
for(int i = mx_mi ; i >= 0 ; i --)
{
if( ans[i] ) printf(" %d %.1lf" , i , ans[i]);
}
return 0;
}

浙公网安备 33010602011771号