原创 我是一個功利主義ACMer

如果你是一個真正熱愛算法競賽,熱愛ACM的人,請關閉這篇博客,我害怕這篇博客的喪氣會影響到你。堅持你的熱愛!加油叭! 如題,從大一開始參加ACM訓練起,我就是功利的。或者說,真正驅動我的是大廠實習和競保的機會,和期末專業課考試時那

原创 點分治學習/模板(5道例題)

感謝b站up大佬:不分解的AgOH。 點分治用於樹上的大規模路徑操作、統計。它的靈活性高,適用範圍廣。很多樹形dp也可以用點分治搞。其實,樹分治中,還有一個邊分治,不過沒有點分治常用。 基本步驟: 第一步 找樹的重心。我們重心爲根

原创 線段樹合併(四道例題)

顧名思義,就是合併兩個同構(就是維護的區間長度一樣)線段樹,其實也沒啥比較nb的算法,就是一個一個節點的合併,但是如果在n個要合併的線段樹裏,如果一共有m個元素,則配合動態開點,複雜度會均攤成一個驚人的O(mlogn)O(mlog

原创 莫隊 (codeforces-220B Little Elephant and Array)

題目鏈接 入門級的莫隊,網上的題解都是結合離散化,在我看了其實是畫蛇添足。因爲當一個x是大於1e5時,他是不可能構成出現x次的(因爲n<=1e5),這個咱們只要return掉,不用管就行了。這裏保險起見開得1e6。我們定義g[i]

原创 二分圖經典模型(洛谷 P1263 宮廷守衛)

題目鏈接 乍一看,經典搜索or狀壓dp啊。但是200的數據量打消了我這個念頭。標籤裏有圖論,就往圖論上想。發現應該是個二分圖,而且是一個經典的模型,曾在藍皮書上看見過類似的。 我們先得出無牆壁連續行塊,連續列塊。並給之編號。 例如

原创 可持久化數組及並查集(概念及模板)

可持久化數組 模板鏈接 顧名思義,就是可以查詢歷史版本的數組,我們使用主席樹維護這個數組就ok了.從此延伸出了可持久化並查集等很多可持久化結構,比較簡單, 下面是模板代碼: #include <iostream> #include

原创 可持久化Tire樹(upc個人賽 腿部掛件)

問題 A: 腿部掛件 時間限制: 2 Sec 內存限制: 256 MB 題目描述 Jim是一個熱愛打遊戲的小夥子,可惜他的遊戲水平不太行,以至於經常在遊戲裏被別人欺負。而且Jim不僅遊戲玩的菜,他還很愛噴人,但是由於自己的垃圾

原创 18級qdu_acm集訓隊選拔/icpc網絡賽總結

選拔可算是結束了,做的不好,是所有人都不好。。。都是比較簡單易懂的題。zx大佬因爲發燒,帶病出徵,所以狀態比較不好,不然這些題,他肯定是分分鐘ak的。。。。最後榜首還是被計科院lb大佬搶去了。。。平凡人第二。。。。不出意外的話,應

原创 思維(codeforces 446A DZY Loves Sequences)

題目鏈接 異常簡單的一道題,但是過題異常的不順利。被噁心到了。 從一開始的純dp(dp[i][j],爲到第i位修改j位,的最大長度)。結果發現非常的不好轉移,究其原因,我們修改時,可以修改最後一位,這樣就是當前位和後一位的大小關

原创 線性遞推式計算模板(知前幾項跑第n項,高斯消元+矩陣快速冪)

注:本模板常數較大 本模板適用於: 如果有遞推式滿足: f[n]=k0+k1f[n−1]+k2f[n−2]+......+kmf[n−m]f[n] =k_0+ k_1f[n-1] + k_2f[n-2]+......+k_mf[n

原创 莫比烏斯函數及其反演定理

定義,求法,打表及反演定理在這篇博客進行了介紹 給出兩個反演形式 f(n)=∑d∣ng(d)⟺g(n)=∑d∣nμ(d)f(nd)(1)f(n)=\sum_{d|n}g(d)\Longleftrightarrow g(n)=\su

原创 莫隊(codeforces 86D - Powerful array )

題目鏈接 通過這個題,感受到了莫隊的魔性。。。 限時5s的題,吸着氧,一路擦邊4秒9,愣是懟完了所有樣例,woc,nb。 這題莫起來很容易,雖然知道不是正解 ,從此愛上了莫隊。。。 下面是ac代碼: #include <iost

原创 二分圖的必經邊與可行邊(HDU - 3026 Chinese Chess)

題目鏈接 對於一個二分圖,我們對於滿足最大匹配的多組匹配方案中,對於某些邊: 如果對於每個方案,這個邊都被選擇了,我們稱這條邊爲必經邊 如果一條邊,它在至少一個方案中被選擇了,我們稱這條邊爲可行邊 求必經邊第一種方案,我們易知

原创 線段樹分裂/合併模板

模板鏈接 最早從zx神仙口中得知這個玩意,但是一直沒學,現在學一下再說,發現不是什麼神仙東西,說實話有點小失落.按照區間分裂可以在O(logn)O(logn)O(logn)內完成,不過,合併操作需要枚舉線段樹的每個點進行合併,效率

原创 KMP/前綴出現次數統計(codeforces 432D)

題目鏈接 對於這個題,我們再利用KMP求出next數組後,可以有一下方法統計前綴字符出現的次數。 for (int i = 0; i <= na; i++) cnt[i] = 1; for (int i = na;