今天開始了新的篇章——數論!
數論一直都是**的重點呢!無論是從數字方面,還是從幾何方面,都不算是什麼容易的東西……
所以數論一定要——好好背模板……
今天開到了最大公約數!
最開始講的還是我們的老朋友素數和約數,無論是以前做題、網上找題解,都能發現n種求解素數、約數的**,而且乙個比乙個省時間!
判斷素數,老方法,1~sqrt(n)試試能不能整除。
求素數,老方法+1,迴圈1~n,不是素數的倍數也不是素數,用乙個visit陣列標記一下,防止超時。
線性篩法暫時背不熟,這裡……默寫不過,看倒是看得懂,實際上想法跟上面那個有點相似,也要標記,而且要用乙個陣列儲存所有的質數,總之這個方法沒有上面的那個好用好背,我覺得現在這個水平還是看上面那倆老方法就挺好。
質因數分解,很久以前做題的時候,求質因數個數的時候,見到過類似的**,因為看不懂而印象深刻(是記不住的那種印象深刻……),現在再看,可以理解了,比較明了,很好的方法,一看就知道不會超時,因為n本身就在隨著i(因子)的變化而變化,i越大,n就會變得越小。
中心思想:2~sqrt(n)遍歷,遇到是因數並且是質數的,就放在陣列裡面,並且從n裡面除去所有的i。最後判斷你、本身是不是質數(最後的結果留下大於1說明除不盡,是質數,要加到質數的陣列裡面,否則不加)。
約數也是比較常考,但是最開始的那些東西啊,真的很不好背唉,那都是一些什麼東西啊!混蛋,看不懂,以前也沒有考過,所以就不想看……然後導致後面有個例題看不懂……嗚嗚嗚,好難背啊這裡。
求n的約數很簡單,就是乙個個的遍歷,並且約數都是成對出現的,i是,那麼n/i也是,放到陣列裡面就好了。
1~n的稍微有點難,因為n本身的話時間複雜度為根號n,這樣字就變成了n倍的根號n,最一般的情況下都會超時,所以要用乙個新的辦法:二維的動態陣列。
每次找到乙個i,它的倍數i*j的因子就一定有i,這時候把i放進下標為i*j的第二維陣列裡面就好。
其實也很簡單啦~
最大公約數那個輾轉相除法、輾轉相加法什麼的,應該都很熟悉,就是時間久了有點容易忘事!還要再去網上找一找模板在背背。
今晚上!練習打字的時候,到了第三個複習的關卡!超開心!可惜的是打著打著就煩了,就打不下去了……嗚,沒耐心!
但是啊!今晚的部落格,可是我努力不看鍵盤,放好手指,盡力乙個字乙個字打出來的!而且我發現,果然專門去背過按鍵的位置是十分的不靠譜的!完全沒有我不看鍵盤隨便打來的準、來的快!
好開心!這是實實在在的進步啊!下次繼續努力!
訓練日記 20161024
初賽好像不會掛了,好開心!版權原因,不上傳題目。題意 求1 n n 1000 的排列中逆序對恰好為 k 個的排列數目。多測。題解 f i j 表示前 i 個數,逆序對個數恰好為 j的排列個數,易得轉移方程f i j i 1k 0f i 1 j k 用字首和優化可使複雜度降為o n2 題意 對於乙個長...
訓練日記 20170324
長久不更新部落格了。期間經歷了恰好被ag線踩的wc,經歷了漫長痛苦的小高考準備。現在終於可以重整旗鼓,向省選進發!幾個月來,唯一不變的是我仍然是個超級蒟蒻 版權原因,不上傳題目。題意 最小樹形圖 去年就接觸 聽說 過的演算法,一直沒有真正寫過。因為各種奇怪的細節錯誤,調了好幾個小時 比如找環時沒有判...
訓練日記 20170328
今天的題目似乎很水 好多人都提前ak離場了,於是提前一小時收題。但是我還是各種不會。思維江化?話說,聽到一句很有趣的話 山不在高,有林則徐 水不在深,有江 題意 給定一棵有n n 105 個節點的有根樹,編號互不重複。詢問有多少棵子樹內節點編號構成乙個連續區間。題解 水題,對於每個節點 i 記錄以該...