csp 稀疏向量(含解析)

    科技2026-02-20  6

    思路

    我的思路有点像数据结构中的多项式相加。 多项式相加:如果指数相同,那么进行运算,否则指数小的后移。 对于多项式相加,没有对应项,直接写下来即可。但是对于本题,没有对应项就是0,也就不用管了。

     

    C++代码

    暴力就完了… 但是要考虑数据,我全使用了long long型

    #include <bits/stdc++.h> using namespace std; int main(int argc, char** argv) { long long n; long long a,b; cin>>n>>a>>b; long long arru[a][2]; long long arrv[b][2]; for(int i=0;i<a;i++){ for(int j=0;j<2;j++){ cin>>arru[i][j]; } } for(int i=0;i<b;i++){ for(int j=0;j<2;j++){ cin>>arrv[i][j]; } } long long l1=0,l2=0;//分别指向两个二维数组的行 long long sum=0; while(l1<a&&l2<b){//只有有一个遍历完了,就跳出循环 if(arru[l1][0]>arrv[l2][0]){//前者index大,那么后者后移 l2++; continue; } if(arru[l1][0]<arrv[l2][0]){//反之前者移动 l1++; continue; } if(arru[l1][0]==arrv[l2][0]){//相等做运算 sum+=arru[l1][1]*arrv[l2][1]; l1++; l2++; continue; } } cout<<sum; return 0; }

     

    Processed: 0.009, SQL: 9