CSP2020 6 2稀疏向量

2021-10-10 20:44:02 字數 635 閱讀 4905

題目位址稀疏向量

此題解題思路是因為是稀疏向量,所以肯定不能用陣列,此題最好使用 vector> 來儲存傳入的資料。

同時還要考慮到資料量一旦大的話,就不能把向量a中的乙個元素和向量b中的元素比較n次。

考慮輸入的向量總是順序的,可以維護兩個數字下表來控制比較的次數

#include

#include

using

namespace std;

intmain()

//輸入向量b資料

for(

int i=

0;i)//乘積之和可能過大,用long long儲存

long

long sum=0;

//向量a,b下標

int ant=

0,bnt=0;

while

(antsize()

&& bntsize()

)//向量b維度小於向量a,向量b下標++

else

if(arr1[ant]

>arr3[bnt]

)//向量a維度小於向量b,向量a下標++

else}

cout

}

稀疏向量 CSP 202006 02 C 題解

csp 202006 02 稀疏向量 為了節省空間和時間,將向量v1儲存到實體內,而對向量v2的每組資料直接判斷操作。建立乙個指向v1首元素的指標pivot。如果當前比較的v1,v2腳標相同,則相乘,加入內積,pivot指向下一元素。同時,這意味著前乙個元素不會出現在以後的遍歷中,節省了演算法執行的...

演算法巧解 csp稀疏向量 使用map 鍵值對

這個 很簡單,就是簡單模擬一下,使用兩個陣列,分別儲存兩個向量,最後再遍歷一下就ok 但是只有60分,因為該儲存方式是將稀疏向量恢復為不稀疏的向量儲存的,導致在測試最大的幾個資料項的時候記憶體不夠用 include using namespace std intmain int varr n 1 f...

202006 2 稀疏向量

試題編號 202006 2 試題名稱 稀疏向量 時間限制 2.0s 記憶體限制 512.0mb 最開始用結構體寫的,思路和用map差不多,但是一直執行超時,然後換用map寫的最後滿分過了。輸入第乙個向量將值和下標都存到map裡,輸入第二個向量時進行判斷,如果輸入的下標在map裡的值不為零,說明該位置...