1009 Product of Polynomials (25point(s)) Easy only once

基本思想:

没什么好说的,感觉个人比示例时间复杂度低一点,O(n)而不是O(mn);

 

关键点:

注意多项式相乘maxn开多少的问题;

 

 1 #include<iostream>
 2 #include<stdlib.h>
 3 #include<stdio.h>
 4 #include<vector> 
 5 #include<string>
 6 #include<math.h>
 7 #include<algorithm>
 8 using namespace std;
 9 using std::vector; 
10 struct element {
11     int e;
12     double c;
13 };
14 vector<element>vec;
15 const int maxn = 2020;
16 double ed[maxn] = { 0 };
17 int main() {
18     int n;
19     scanf("%d", &n);
20     vec.resize(n);
21     for (int i = 0; i < n; i++) {
22         scanf("%d %lf", &vec[i].e, &vec[i].c);
23     }
24     scanf("%d", &n);
25     int a;
26     double b;
27     for (int i = 0; i < n; i++) {
28         scanf("%d %lf", &a, &b);
29         for (int j = 0; j < vec.size(); j++) {
30             ed[a + vec[j].e] += vec[j].c*b;
31         }
32     }
33     int cnt=0;
34     for (int i = 0; i < maxn; i++) {
35         if (ed[i] != 0.0)
36             cnt++;
37     }
38     printf("%d", cnt);
39     for (int i = maxn - 1; i >= 0; i--) {
40         if (ed[i] != 0.0) {
41             printf(" %d %.1lf", i, ed[i]);
42         }
43     }
44     system("pause");
45     return 0;
46 }
posted @ 2020-01-13 16:05  暮云林凌  阅读(115)  评论(0)    收藏  举报