演算法訓練必備基本知識點

2021-09-11 11:42:01 字數 1595 閱讀 2629

錯誤,超時解決方案

1.首先要看好資料的取值範圍,當n的範圍較大時應該使用long型別的整型。

2.當資料取值範圍定好好後,對於較大資料仍然會出現錯誤,或者是執行超時。

那麼重點就來啦:我們要仔細分析題目要求,對演算法進行規劃,化簡,考慮到仍然超出資料long型別取值範圍的情況。

3.沒有立即反饋的情況下,自己再用幾組資料進行驗算,以確保能拿到部分分數。

在競賽中,我們認為計算機一秒能執行5×105次計算,如果題目給出的時間限制為1s,那麼你選擇的演算法執行的計算次數最多應該在10^8量級才有可能解決這個題目。

一般o(n)的演算法能解決的資料範圍在n≤10^8

o( n logn)的演算法能解決的資料範圍在n≤10^6

o(n√n)的演算法能解決的資料範圍在n≤10^5

o(n2)的演算法能解決的資料範圍在n≤5000。

o(n3)的演算法能解決的資料範圍在n≤300

o(2n)的演算法能解決的資料範圍在n≤25。

o(n!)的演算法能解決的資料範圍在n≤11。

以上範圍僅供參考,實際中還要考慮毎種演算法的常數。

貪婪演算法  

注意分支下還要考慮其他情況,不可輕易只分大類。 

遞推和遞迴

1. 遞推和遞迴思想其實都一樣,只是乙個往前推,乙個往後退。

2.它的解法第一步列出它的遞推和遞迴公式。

3,第二步處理邊界。

4.但是要注意的是當次數是可規劃的情況下就可以直接用簡單的列舉方法。其實更有效率。

深度優先搜尋和廣度優先搜尋

1.深度優先搜尋用到遞推的思想,自身呼叫自身。一般用於尋找所有存在的情況或者其中的任一情況。有時會用到stl中的棧(stack)先進後出。其中要注意它的回溯。當訪問過的點標記後是否需要解除標記。例如走迷宮就需要標記後解除標記,但尋找草叢塊數就不需要解除。還有就是在實現演算法時要注意適當進行剪枝,在一定情況下可以節約很多時間以免超時。

2.廣度優先搜尋用到佇列(queue)先進後出的思想。一般更簡潔的尋找到步數最少的結果。可以減少執行時間。

3.當然,dfs和bfs都需要考慮結束條件,否則都會迴圈無止境。這就需要根據條件來看怎麼設定結束。

動態規劃

1.這個演算法極其高效率的解決問題。它的思想是用動態陣列來存放最優解,由末到初,推斷出陣列改怎樣存放資料最優。

2.其中陣列存放數也就是用for迴圈的遞推,遞迴思想。具體實現也真得找規律。

揹包

他是動態規劃的公升級版,演算法邏輯更加複雜。

總結

1.遞推和遞迴是演算法的基礎,其他大多都為遞推,遞迴演算法加上新思想演變而來。

2.尋找演算法的根本也就是尋找操作與操作之間的聯絡,盡己所能尋找最優演算法,再將邊界的情況進行處理即可。

3.emm,有一點就是比如題目結果要求mod的時候要在任一能取的時候都要取一下,否則可能出現錯誤。

基本知識點

1 程序和執行緒的關係 1 在有執行緒的作業系統裡面,程序是分配資源的基本單位,執行緒是排程的基本單位。2 1個程序可以擁有多個執行緒 3 執行緒同時也有一些自己的資源,包括 程式計數器,堆疊等 4 因為執行緒所擁有的資源比較少,因此進行排程的時候所消耗的資源就少。5 執行緒共享程序的 段,程序的一...

基本知識點

dram 動態隨機訪問儲存器 dynamic random access memory 隨機訪問的意思是,訪問任何乙個記憶體單元的速度和它的位置 位址 無關,讀寫位址0x00001和0xffff0所需要的事件是一樣的。rom 唯讀儲存器 read only memory 它的內容是預先寫入的,掉電也...

PHP基本知識點

1.http協議中幾個狀態碼的含義 503 500 401 200 301 302。http狀態碼 1 請求收到,繼續處理 2 操作成功收到,分析 接受 3 完成此請求必須進一步處理 4 請求包含乙個錯誤語法或不能完成 5 伺服器執行乙個完全有效請求失敗 500 伺服器產生內部錯誤 501 伺服器不...