原创 POJ 1875 Binary Search Heap Construction

本題實現的是treap的結構,從key的角度來看是一個BST,從priority的角度來講是一個heap,如果用treap的定義,每次插入進行旋轉,這道題會超時,因此先針對key進行排序,排序好之後再按照順序插入到treap中。

原创 POJ 1610 Quad Trees

又是一週數算實習,馬上就要上機考試了整個都要不好了,還好這一次的四分樹作業給了我一丟丟的信心… 作業是禁止使用STL的,而且明確要求必須用空間數據結構,所以這道題本來可以用廣搜寫的很簡單,但是爲了滿足作業需求我還是使用了四分樹,並

原创 POJ 3702 距離排序

做完作業去百練上提交這道題目,發現去年的這幾天的提交記錄,WA了無數條也沒有過 = = 也不是很懂爲什麼內排序的題目還會把這道題扒拉出來 思路很簡單,把所有的點記錄下來然後把每兩個點的距離分別求出來然後和兩個點的座標一起存起來,最

原创 POJ 4083 我愛北大

這道題真的是目前爲止見過的最有情懷的題目之一,感覺做完以後就不再愛北大了… 1、因爲最後要求輸出任意兩個路徑之間的最短距離,因此我選擇使用的Floyd算法(數據比較弱,樣例代碼是貪心,應該也能過),Floyd算法用一個dis[N]

原创 POJ 3080 Blue Jeans

作爲後綴數組的練習題,更好地理解後綴數組的用法,來寫了這道題,應該是比life forms那道題更簡單一點,整個程序結構和那道題幾乎是一模一樣的,這次更好地理解了check函數裏面一些細節,比如記錄位置變量i經常會在循環裏面++了

原创 POJ 1703 Find them, Catch them

並查集的經典題型,一共有兩種操作:兩個案件AB不是同一個團伙,詢問AB是不是同一個團伙作案 我在結構體中定義兩個元素,一個記錄其父節下標,另一個記錄其與父節點的關係,如果是同一個組織那麼就記爲0,否則記爲1,在進行帶路徑壓縮的查找

原创 POJ 3294 Life Forms

老實說跑過來寫博客是很慚愧的…畢竟沒有靠自己的能力解決這道題…代碼的關鍵部分也是借鑑了同學的,但是畢竟還是花了我3個小時的時間來調試,所以還是來稍微記錄一下以免以後再忘記。 本週的學習內容是傳說中的後綴數組,本來是試圖弄明白後綴數

原创 POJ 2352 Stars

新人第一次接觸樹狀數組,上課也沒有好好聽講,這裏把做題的時候的一些經驗稍微總結一下以免以後忘掉: 1、對於一個樹狀數組c[n],其中每個元素的值是對應的原數組a[n - 2^k +1]到a[n]的所有數字的和; ​2、其中的k爲數

原创 POJ 1928 The Peanuts

這兩天的作業題目都沒有什麼技術含量,這道題只需要把每個有花生的點按照花生的量從大到小排起來,然後從頭開始一個一個找,如果能摘到花生並且安全走到公路上就把花生加到我們的總數上。注意每次判斷能不能走到某個點的時候要把走回到公路的時間也

原创 POJ 3261 Milk Patterns

繼續練習後綴數組的題目,這次也是比較經典的題型,求出來的重複k次的子串可以重疊,求height數組之後,計算連續的一片區域使得height[i]都大於k 再記錄幾個易錯點: 1、在原始的數組後面要補充一個數字0,不然的話計算後綴

原创 POJ 1664 放蘋果

打算在期末考試之前把數算的相關題目刷一刷,期末如果像期中這麼慘就沒得玩了,發現線性表裏最水的一道放蘋果,就順手寫掉好了,這樣想想,放蘋果還是我學的第一道遞歸的題目,當時真是理解了好久都沒弄明白,後來程序設計實習的簡單整數劃分用DP

原创 POJ 3664 Election Time

爲了圖省事不自己寫排序函數,就想着先用sort先排一次,然後剩下的K個就用bublle來排…沒想到竟然TLE,本着將懶人精神發揚到底的信念,我定義了兩個一模一樣的結構體,分別重載了兩個小於號然後用sort排序…儘管看起來有點蠢,但

原创 POJ 2182 Lost Cows

趁熱來一發線段樹,主要是聯繫一下線段樹的基本操作,寫了兩道題之後確實感覺手感好了很多,這道題的思路是,從後向前挨個數,最後一個牛總是可以判斷是第幾個,然後就把相應的位置佔住,以後再數的時候就不能數已經佔住的位置了,說的不是很清楚,

原创 POJ 2299 Ultra-QuickSort

這個題目的本質是求一個數組的逆序對的數量,在線性代數裏面一個求逆序對數量的方法是,每次取所有剩餘數字當中最小的數,然後數一數這個數前面有多少已經取出來的數字,即爲當前這個數字所貢獻的逆序數,所以本題就要模擬這個過程,排序之後每次取

原创 POJ 1651 Multiplication Puzzle

好久不寫blog了,也是因爲各種各樣的事情沒有功夫寫代碼,新學期開始了繼續努力~! 算分課上講了動態規劃,這次拿這個題目練手,這次用數組m[i][j]存儲區間i到j的最小做運算的數量,狀態轉移也比較簡單,代碼也單獨拿出來作爲一個函數這樣看