感受遞迴中的分形太簡單了,基本就是個找規律+遞迴,講一講分治
分治,即分而治之 個人認為,其實它和二分差不多(或者二分其實是它的一部分?)
二分和分治的區別,在我看來,是二分需要有決策單調性,(而分治貌似不需要?)
借助分治,把答案的複雜度從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 實現的過程類似於倒過來的分治 當然也可以直...