原创 poj 4045 (樹形dp)

題目鏈接 去年金華邀請賽的B題, 其實就是個挺簡單的樹上的統計      #include <iostream> #include <vector> #include <cstdio> #include <algorithm> #incl

原创 hdu 4606(線段相交 + 最短路 + 最小路徑覆蓋)

題目鏈接 多校第一場的題目, 這題很綜合, 考察了很多點, 首先對於這種二維平面上帶有障礙的最短路在LRJ的白書上有提到, 然後對於後一部分由於城市的佔領有順序所以得到了一個DAG, 然後再二分相鄰兩點間的最長距離每次用最小路徑覆蓋判斷人

原创 spoj FTOUR2(樹的分治)

題目鏈接 QZC樹的分治論文第二道例題, 自己想了想覺得沒什麼思路, 後來看了論文中的解法看到中間時想到了一個線段樹優化dp的解法, 論文中也提到的令dp[L] 表示從當前根結點向下經過L個crowded節點的最長路徑值,在進行分治時用兩

原创 poj 3281 (拆點網絡流)

題目鏈接 下週要給學弟講網絡流了, 最近複習了一下發現了這題,這道題主要考察的就是構圖, 如果只有食物或者飲料那麼這 題就很水了, 由於每一頭牛都要有和一種食物還有一種飲料匹配那麼可以考慮將牛拆成兩個點然後左邊和食物相連右 邊和飲料相連

原创 hdu 4614(數學 + 亂搞)

題目鏈接 多校第二場的題目, 首先可以確定lcm(a, b)是週期,然後求出一個週期內的結果, 在一個週期內需要分段考慮,  同一個段內的差值都是相同的, 所以直接模擬每段求再累加就可以了 #include <iostream> #i

原创 hdu 3488(費用流)

題目鏈接 同這題 #include <cstdio> #include <queue> using namespace std; const int N = 2005; const int M = 10005 << 3; typ

原创 hdu 3435(費用流)

題目鏈接 算是偶然發現的一種題型吧, 這種題目的最明顯特徵就是要求每個點都在一個或幾個不含重複邊的環上, 然後一般都是求這些環的最小或者最大權值和, 具體做法就是拆點將一個點u拆成點u 和 u' ,源點連每個u容量爲環的個數u'點匯點容量

原创 hdu 3599(網絡流 (不相交路徑))

題目鏈接 題意就是求給定兩點間有多少條不含重複邊的最短路, 先求出最短路然後構出最短路徑圖即保留原圖中 div[v] == dis[u] + w(u, v)的邊然後再跑一遍最大流即可, 注意n = 1時答案爲0 #include <

原创 hdu 4670 (樹的分治)

題目鏈接  經典的男人八題的改編題目, 從邊權到了點權, 而且每個節點有30個三進制的狀態, 但其實做法還是和原來大同小異的在處理子問題時需要用到一個map, 複雜度爲n * log(n) * log(n) * 30 #include