題目位址稀疏向量
此題解題思路是因為是稀疏向量,所以肯定不能用陣列,此題最好使用 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裡的值不為零,說明該位置...