《演算法競賽高階指南》0x02 遞迴與遞推 學習總結

2022-07-06 22:30:21 字數 777 閱讀 3778

感受

遞迴中的分形太簡單了,基本就是個找規律+遞迴,講一講分治

分治,即分而治之 個人認為,其實它和二分差不多(或者二分其實是它的一部分?)

二分和分治的區別,在我看來,是二分需要有決策單調性,(而分治貌似不需要?)

借助分治,把答案的複雜度從n^2降級到nlogn 其中,還是二分的思路,先把問題的當前狀態一分為2,左邊一半,右邊一半

遞迴到最簡單的情況下手動判斷進行決策

然後將兩個小狀態之間的情況也進行判斷

因為答案可能夾在兩個小狀態中間

這樣一來,就可以輕鬆解決問題

聊聊遞推 其實這本書上的遞推題目倒對我沒有什麼影響

我始終認為,遞推其實就是找規律的程式設計實現

一直再思考,遞推和dp有什麼關係

大致地說一下自己的理解: dp的重點在於決策,是要在幾種決策狀態下尋找最優解,並且要具有最優子問題結構

但是遞推的終點在於轉移,即通過已有的狀態直接推出當前的狀態,並不需要任何決策最優性的判斷 (好像說了一堆廢話hhh)

解題

首先,做遞推的題目,一定不能上去直接敲**

可以在草稿紙上把所有情況都列一列,想找數學題規律一樣,思考每個階段下狀態之間的聯絡

這種題目一般有個特點:不要求輸出具體的方案或者其它具體的操作

這個時候就可以選乙個操作,思考為了達到這種狀態需要做哪些操作,而它們又分別代表了哪種狀態 (感覺說的好繞hhhh)

總之就是這樣了(▽

)

演算法競賽高階指南 0x02 費解的開關

因為這題是第一題 其實不是第一題 以為比較簡單,一眼暴力,256。算的時候少算了一位,以為規模是1e7,導致樣例都算很慢,慢到我以為是死迴圈。找了半天死迴圈才發現這個 其實能出結果.然後就按照普通的翻轉問題一行一行處理。惡臭,而且有一處變數名寫錯查了半個多小時。下面標出錯誤的地方 include i...

演算法競賽高階指南0 2 遞推與遞迴

目錄 1.實現指數型列舉 3 2.遞迴實現組合型列舉 3 3.遞迴實現排列型列舉 4 4.費解的開關 5 5.strange towers of hanoi 6 6.sumdiv 8 7.分型之城 10 從n個數中選任意多個數 並輸出 include using namespace std int ...

演算法競賽高階指南 0x00

快速冪模板,寫一下快速冪的原理。我們知道,乙個數 n 在二進位制 也可以是其他進製 下可以被表示為 a 1 a 2 2 1 a 3 2 2 a m 2 那麼我們可以考慮將其分拆成二進位制狀態下的每一位,然後做冪運算。這樣做的時間複雜度為 o log 2 n 實現的過程類似於倒過來的分治 當然也可以直...