和1002很像
嗯,所以又看了一下午才把题看懂
就是第一行的每一项都与第二行的每一项指数相加,系数相乘
然后再和1002一样指数相同的合并
题目做起来很简单
第一遍做完,样例也顺利过了
提交
10分,,,
emmmm
这次的0都有注意啊,,
输出格式也没错,,
没啥能改的地方啊???
网上的代码有的都和我一样啊就是数组名字不一样
难道是数组大小的事?
1000->2000
没过,,而且变成了 5分,那就说明是数组大小的问题了
照着AC的代码改成2005
就,,过了
尝试了几次后,发现只要数组大小开过2000就可以,2001可以AC
还在努力思考原因。。(明白了,因为自己太傻了——1002指数不涉及运算,1009不是呀,最大1000,加1000,,,)
果然还是多用STL最方便吗。。
#include <cstdio>
#include <iostream>
using namespace std;
int n, m, sum;
double arr[2005], brr[2005], crr[2005];
int main(){
cin >> n;
for(int i=0; i<n; i++){
int t;
double h;
cin >> t >> h;
arr[t] = h;
brr[t] = 1;
}
cin >> m;
for(int j=0; j<m; j++){
int t;
double h;
cin >> t >> h;
for(int k=0; k<2005; ++k){
if(brr[k]==1) crr[t+k] += h*arr[k];
}
}
/*for(int l=0; l<2005; l++){
if(crr[l]!=0) sum++;
}*/
for(int i = 2004; i>=0; --i){
if(crr[i]!=0) sum++;
}
cout << sum;
for(int o=2005; o>=0; --o){
if(crr[o]!=0) printf(" %d %.1f", o, crr[o]);
}
return 0;
}
偷懒了,,还是要坚持住啊咸鱼,,,