考試總結及注意的地方:
首先:
- 別放棄,任何時候別放棄;別嚇到,不管題面如何;別慌張,無論什么時候一定要鎮靜。
- 時間分配很重要,寫得快點。
- 不要寫錯文件名,freopen,輸出格式,調試輸出變量未刪除,取模
- 別想這道題簡單還是難,排名怎么樣。發揮自己最大的水平。盡量想任何的部分分。
- (不要交空代碼,實在不行也要用暴力跑跑)
- 出題人不想讓你爆零,就不應該爆零。
- 編譯命令,用評測時的編譯命令編譯一。
- 努力得分。
- 做完一題,做下一題之前,將所有樣例都用文件試一遍。
- 每一場比賽都拼命打。
- 認真讀題!!!題意,數據范圍
- 最后用文件測試一下
- 讀完一個題,把想到的一些思路,問題,注意事項都寫下來,寫代碼的時候看看。
- 題目的數據范圍可能是由這個做法推出正解做法。
思路:
- 拿到題全讀完。(盡量多讀幾遍題目,不要理解錯題意)
- 可以打暴力的想想如何暴力。
- 會正解的想想正解
- 可以打表的盡快打
- 數據結構題 看看是什么數據結構
- 計數題-dp,組合數學(莫比烏斯,burnside,容斥……),
- 圖論 網絡流,tarjan,
- 思路放開,擴展開,多想想各種做法。各種處理,算法,dp(根據數據范圍)
- think twice ,code once 想好(最好證明)思路在打代碼。
- 不要局限於一種思路,換種思路,不要被思路困住。
- 對於隨機數據,想想隨機的做法。
- 腦洞大開,換種思維一些特殊的算法,
-
挖掘性質。
-
- 針對有些數據不要直接不輸出。亂搞,隨機化(數據隨機?),暴力,貪心,特判
- 從大的方面考慮,推式子。簡化問題,不要想的太復雜。推式子,發現最終要求什么,模型是什么。
- 讀題,當完全沒有思路時,回歸道題目的本質,看有沒有漏下的細節
- 兩面考慮,正難則反,換個角度
代碼實現,保證代碼正確
- 集中注意力寫代碼,知道每一行每一個變量在干啥。寫完后也要讀一遍代碼。
- 調試bug時,別調出舊bug,多了新bug
- 盡量對拍,對拍時,不要兩個錯誤的程序一起拍(如兩個程序的輸出格式是復制的,都是錯的)
- 注意數據范圍,int 與 long long
- 調試:假裝給小白講代碼。有趣(看一遍,讀一遍,想一遍)
- 用暴力跑10分鍾跑較大的樣例。
- 確定寫不寫的性價比,對拍的性價比。
-
跑一下極限數據,看運行時間,輸出是否正常(負數,1000000000)。(無法對拍的程序,也要跑一下極限數據,然后看一下輸出是否正常)
- 檢驗long long與mod。
- 輸入輸出格式
其他:
- 五分鍾一個板子,保證不出錯。
- 加強碼力(既正確又快)。
- 關鍵字:next,rank,hash,(make),prev,cmath:x1,y1全局,pow
- 調FFT:1212121?
- 對於分類情況很多的地方:(1)靜下來仔細想想,把所有情況捋一下;(2)對拍,拍到一個改一個(沒有更好辦法的時候)
思路總結:
貪心/其他的思路難寫 -> 考慮dp
dp想不出 -> 挖掘性質先想狀態再想轉移判斷有無后效性
dp空間開不下 -> 換狀態壓狀態狀態剪枝(減少無用狀態,保留有用狀態)
時間復雜度太大 -> 改枚舉順序數據結構優化
dp:是否滿足無后效性,最優子結構
從小到大排還是從大到小排。