思路很简单,就是二维数组或者结构体数组存储两个稀疏向量,然后找相同的index,求value积之和即可
错误原因如果你是因为60分,来看这篇文章,我猜你一直在纠结是不是数组爆栈,然后试了好几遍,发现还是60分,哈哈哈
你可以看一看你存储内积的变量数据类型,数据太大的另一个结果是溢出,所以你得将int改成long long
大无语了属于是!!!感觉自己老被这种问题浪费好多时间
总结 大数据的部分过不了???1. 爆栈,改全局数组
2.溢出,改数据类型
3.......还有什么呢??
解题代码(虽然简单还是奉上吧)#includeusing namespace std; struct xian { int i; int v; }; xian arr[500001]; xian brr[500001]; int main() { int n,a,b; cin>>n>>a>>b; for(int j=0;j>arr[j].i>>arr[j].v; for(int k=0;k>brr[k].i>>brr[k].v; int q=0,p=0; long long sum=0; while(q!=a&&p!=b)//while循环这中结构还是挺好用的 { if(arr[q].i==brr[p].i) {sum+=arr[q].v*brr[p].v;p++;q++;} else if(arr[q].i>brr[p].i) p++; else q++; } cout<



