昨天主要看了遞迴和遞推以及二分的主要技巧,之前對於搜尋就很不熟悉也不太會用,現在看起來也是比較吃力的。
遞迴:相對於遞推,遞迴的思想和平時的想法是相反的,遞迴是從後往前然後根據已知倒推回去,其中利用了自身呼叫自身和回溯還原現場。
主要思路:縮小空間,尋找原問題和問題邊界;有兩種結果:成功或失敗;如果成功,擴充套件到當前問問題,反之,回溯到當前問題並重新尋找。
應用:指數型列舉,組合型列舉,排列型列舉
指數型列舉:從1~n中隨機選取任意多個,輸出所有情況
思路:等價於對於每個整數有兩種情況,選和不選,可以利用位運算來列舉所有情況。利用遞迴的思想,每次遞迴有兩種,遞迴一次可用整數數量減一,當整數用完時為結束的邊界條件
位運算,遞迴:
#include#include#includeusing namespace std;
int n;
void dfs(int u,int v)
組合型列舉:從1~n中選出m個數,輸出所有情況
思路:和指數型列舉類似,只是輸出的邊界條件改變,組合型列舉關鍵在於多了一步剪枝
#include#include#includeusing namespace std;
int n,m;
void dfs(int u,int w,int v)
排列型列舉:輸出1~n的全排列
思路:典型的遞迴問題,排好乙個數後,把剩餘的n-1個數按任意次序排號,乙個位置乙個數,討論那個位置放哪個數。
#includeusing namespace std;
int n;
vectorv;
void dfs(int a,int s)
二分:當某個問題具有單調性時,可以通過二分解決,但是要注意精度問題。函式求極值可以利用三分求解。
昨天晚上比賽,還是感覺讀題問題嚴重缺乏,乙個題給你讀題速度慢,理解也慢。有時甚至理解錯題意。昨晚上新出現乙個演算法:莫對演算法,現在還沒有完全理解,今天再看看。
加油!!!
暑假假期訓練總結 2
早上的討論 學到不少東西,很細節,很舒服。上午看了看之前沒看明白的中國剩餘定理,上午看斐波那契數,跟著推導了一下得出結論,卡特蘭數,卡特蘭數沒看完,看了它一些例題 下午 做題英語不好就真的很呆,很傻,很難受。之後看了看卡特蘭數的一些題型,在問題中基本上要推導問題靠攏到卡特蘭數的第乙個遞推公式上,再用...
CSU ACM2019暑假訓練(2)
補題 原cf 1141f graph without long directed paths 染色問題,u和v記錄邊的兩個頂點,dfs遍歷。有個問題是若邊數 頂點數,為什麼不能直接輸出 1?includeusing namespace std typedef structnode node node...
暑假訓練總結 SSL暑假訓練總結
第一周過的還算好吧,覺得飯堂伙食也挺好的,同學也挺好。學習的東西感覺比小學難好多,有種覺得以前學的東西太簡單了的感覺,但多虧了小學的時候基礎打得還算紮實,學得還行,但總是感覺自己就是個菜雞,就是乙個蒟蒻,哎,室友真的太強了。第一周總結 第二週自我感覺挺不錯的,總算追上了部分室友,成績也開始 這一切都...