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

2021-10-10 18:30:16 字數 1678 閱讀 9689

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

#include

using

namespace std;

intmain()

;int varr[n+1]

=;for(

int i=

0;i)for

(int i=

0;i)//get the mutiple of u and v

long

long res=0;

for(

int i=

1;i1;i++)}

printf

("%lld"

,res)

;}

解決了之前記憶體不夠的問題,但是執行時間超時,還是只有60分,原因是//get the mutiple of u and v(遍歷)處的時間花費過多。

#include

#include

using

namespace std;

intmain()

for(

int i=

0;i)//get the mutiple of u and v

long

long res=0;

for(

int k=

0;k1;k++)}

printf

("%lld"

,res)

;}

省去遍歷的操作,在輸入第二個向量的時候就得出結果,成功100分

#include

#include

using

namespace std;

intmain()

//get the mutiple of u and v

long

long res=0;

for(

int i=

0;iprintf

("%lld"

,res)

;//must be %lld

}

省去每次都要建立乙個新pair

#include

#include

using

namespace std;

intmain()

//get the mutiple of u and v

long

long res=0;

for(

int i=

0;iprintf

("%lld"

,res)

;return0;

}

1、map可以用來建立鍵值對,結構體也可以,但是結構體不提供對鍵的隨機訪問,map可以通過這點來提公升速度。

2、map一般通過insert(pair)來插入值,但直接使用鍵值對也可以

3、在需要對兩個陣列進行操作時,我們可以在儲存第乙個陣列後,在輸入第二個陣列的時候進行對結果的操作。以減少執行時間

抽稀 Douglas Peucker演算法

douglas peucker演算法 在數位化過程中,需要對曲線進行取樣簡化,即在曲線上取有限個點,將其變為折線,並且能夠在一定程度 上保持原有的形狀。經典的douglas peucker演算法描述如下 1 在曲線首尾兩點a,b之間連線一條直線ab,該直線為曲線的弦 2 得到曲線上離該直線段距離最大...

Linux巧解 PATH奧秘

枯燥但精闢安裝linux虛擬機器時設定的 path,當使用putty去執行命令時,系統會自動到 path設定的目錄下去找到這條命令執行 而我們在普通使用者的主目錄或其他目錄下去建立乙個指令碼,賦予指令碼可執行許可權後,按理來說指令碼的名稱就可以作為一條命令執行了,比如說建立了名為greet.sh指令...

GRE數學題巧解

解決gre數學難題兩大巧辦法 最小值代入檢驗法 這是數學部分最重要的解題技巧 顧名思義,這種方法通過代入某乙個值求解,將複雜的問題轉化成簡單易懂的代數式。我們前面說過,gre考試所測試的數學知識不超過初中水平,但ets卻輕而易舉地就能把這些題變難,慣用的手段不是屢設陷阱,就是用晦澀複雜的語言來表達乙...