原创 POJ 2074 視線問題

如果求“能看見的部分”不是很好求的話,那麼我們就來看看哪些地方是看不見的。 一開始看錯了題意,把“不能完全看見” 錯看成了 “完全不能看見”, 結果樣例都沒算對……不過,這兩件事之間倒是非常像: “不能完全看見”的區域是,對於每一個障

原创 POJ 1873 & 1228 凸包和穩定凸包

凸包指的是這麼一件事:平面上有好多點,你希望用一些點圍成一個儘量小的凸多邊形,然後把所有的點都框住。求凸包是很有用的,往往會作爲解計算幾何題目的第一步。 求凸包一般用Graham算法,它是NlgN的算法,非常簡單。基本步驟就是先極角排序

原创 Android開發手記:Socket網絡通信

這個系列的文章就是爲了防止以後自己開發的時候忘了怎麼回事,提醒自己用的……由於自己Android開發非常非常菜,所以貼上來的代碼很有可能像一坨shi一樣,如果有新手朋友看到,希望謹慎地作爲參考,同時如果有神牛看到的話,非常希望能批評指正。

原创 ACM練級日誌:POJ 3740 與Dancing Links

感覺自己搜索能力還是不夠,前些日子記得有個地方出過個題,不會做,一查解題報告發現跟個叫什麼Dancing Links的玩意有關,於是就去查了查,然後發現這玩意似乎有點碉……剛剛AC掉模板題,做個記錄… Dancing Links,

原创 ACM練級日誌:可持久化線段樹初級-POJ 2104

近期決定把數據結構技能樹繼續開發下去,學習更深入層次的三項技能:可持久化線段樹、動態樹、樹鏈剖分。然後那天看了看動態樹,碎了,然後就去看可持久化線段樹了…… 簡單地說,這玩意是一個可以保存修改的歷史版本的線段樹。其本質想法是:對線

原创 HDU 4819:單點更新,區間查詢的二維線段樹

我越來越覺得之前自己的代碼寫的就跟shi一樣…… 題意很簡單,矩陣中指定一個方形,查詢出這個方形中的最大值和最小值,然後把矩陣中間那個點改成它們的平均數。這個就是很明顯的二維線段樹了…… 這種改單點,問區間的二維線段樹在建立和修改的時

原创 HDU 4979: 更好的DLX模板 + 打表

本題構造矩陣並不難,用所有可能出現的組合當列,用所有可能買到的組合當行,然後跑一個可重複匹配即可…… 噁心的事情在於這題數據量有點大,C84 = 70行,可重複覆蓋有點吃不消。 所以應該打表……但是有幾組數據真是需要跑好長時間才能跑出來,

原创 ACM練級日誌:POJ 2318 叉積的簡單應用

最近開始學習計(keng)算(die)幾何,第一道入門題就是這道了。 本題最核心的問題,就是如何判斷一個點在直線(線段)的什麼位置。這一點叉積可以很容易地做到。 設直線(線段)的向量爲S->E, 詢問點爲P, 那麼我們只需要計算一下

原创 POJ 3525 二分答案,推進多邊形和半平面交

題目在問這樣一個問題:給定一個凸多邊形,找到其中的一個點,使得其到每條邊的距離最小值最大,輸出這個距離。 其實就是在問你,這個多邊形中最大的一個內切圓有多大。 怎麼做呢?如果我們事先知道一個半徑R,我們是不是能驗證這個R是否可行呢? 答案

原创 ZOJ 3814:模擬和狀態壓縮BFS

這題絕對是一個大坑…… 題意是,有一個拼圖有9塊,每一塊的四條邊都可能有齒輪。每次你可以選擇把一塊順時針轉90度,但是當你轉這個的時候,其相鄰的圖塊如果和它相鄰的邊兩邊都有齒輪的話,就會咬合,使得旁邊的圖塊也跟着往相反的方向轉,同時這種

原创 ACM練級日誌: CodeForces 414C 歸併排序、逆序數和棧內存

時間一長居然連歸併排序都忘了怎麼寫了…… 偏偏這玩意還不能用STL,必須手寫…… 而且這道題又是遞歸又是取反又是求和,真心麻煩,費了我一個上午才弄出來……期間還遇上了各種各樣的問題。 記錄一下歸併排序:開數組的時候沒什麼特殊情況就

原创 ACM練級日誌:POJ 2886 約瑟夫環,線段樹和反素數

我昨天才知道模擬約瑟夫環是可以用線段樹來解的…… 不妨假設總共有N個人,他們的編號是1~N(這個編號很重要,影響到後面的推導) 怎麼解呢?我們用一棵線段樹,每個節點記錄一下這個區間還剩下多少人,一開始當然就是R-L+1個人了。 然

原创 ACM練級日誌:POJ 3074 數獨與DLX

各位還在使用百度空間的同學們,請原諒最近被我刷屏……  數獨是DLX建模的最經典應用,它最好地示範了“行=決策,列=約束”的建模方法,配合快速的DLX深搜,使它成爲了目前最快的求解數獨的方法。 每行是一個決策,在數獨裏做的決

原创 ACM練級日誌:最大流的FF算法、匈(N)牙(T)利(R)算法

最大流的FF算法似乎是最簡單的,即使是之前沒怎麼接觸最大流的我也照着標程兩下就會了。 FF算法大約是這麼一個過程:不斷地尋找源點到匯點的增廣路,找到一個是一個,找不到了,那就已經是最大流了。找增廣路的時候,假設我在s,我就看看我能

原创 ACM練級日誌:HDU 4286 STL-雙端隊列 以及Presentaion Error

幹掉了去年天津賽區的一道題,還是很爽的,去年用雙向鏈表沒有做出來,今年用雙端隊列做出來了。 想法非常簡單,把整個序列切成三段,左邊一段,L-R一段,右邊一段,這樣移動指針就是隊列之間把隊頭/隊尾元素互相踢來踢去的問題了。增加刪除元素都