原创 11573 - Ocean Currents

這題必須要加優先隊列優化 不然會超時 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <queue> using

原创 CodeForces 166B(凸包)

判斷一下A所構成的凸包是不是跟總的凸包一樣就可以了.. #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cm

原创 HDU 4081 次小生成樹模板題

先求最小生成樹,然後對於最小生成樹這個圖中的所有點對,求出任意兩點之間的所有路徑上的最大邊,注意是對於構造出來的最小生成樹這個圖來說。 然後枚舉刪每一條邊,求最優解。 #include <iostream> #include <cstr

原创 10534 - Wavio Sequence

前後都來一遍最長上升子序列。注意要用nlogn複雜度的算法 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <alg

原创 Treap樹模板

Treap包含了二叉查找樹和堆的特性,而且性價比很高! #include <iostream> #include <algorithm> #include <cstdio> #include <vector> #include <cstr

原创 LCA最近公共祖先問題(Tarjan離線算法)

參考:點擊打開鏈接 覺得鏈接處的代碼有的地方好像有問題,然後自己改了改拿了過來。。 問題描述:給定一個有根樹,n個節點和n-1條邊 以及q個查詢 查詢兩個點的LCA  要求按輸入順序輸出q個查詢的答案。 #include <iostre

原创 POJ3070(矩陣快速冪模板)

#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; const int maxn = 3;

原创 544 - Heavy Cargo

最大生成樹 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <map> using namespace std;

原创 POJ 3164(最小樹形圖模板題)

參考地址:點擊打開鏈接 最小樹形圖是從一個源點出發,選取一些邊,使得能夠從源點可以到達其他所有點,並且權和最小,即有向圖的最小生成樹。 算法步驟: 1.判斷圖的連通性,若不連通直接無解,否則一定有解。 2.爲除了根節點以外的所有點選

原创 12299 RMQ with Shifts

線段樹單點更新 區間查詢 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cstdlib> using nam

原创 10938 - Flea circus

dfs記錄路徑 就行了 #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <

原创 HDU 3487(伸展樹模板)

再也不想寫第二次。 題意:給一個n一個q 表示一開始有n個數 接下來q個操作 CUT a b c表示把[a, b]剪切到c處,FILP a b 將[a, b]區間翻轉。 伸展樹搞。 看的題解:點擊打開鏈接 代碼挺好理解的感覺。 #incl

原创 POJ 1236(tarjan+縮點)

把所有強連通分量各縮成一個點,重新建圖,ans1 = 入度爲0的點的個數 ans2 = max(入度爲零的點的個數,出度爲0的點的個數) #include <iostream> #include <algorithm> #include

原创 hdu 1402 A * B Problem Plus(快速傅里葉變換模板)

快速傅里葉變換在這裏的主要用處就是可以快速求出兩個多項式的乘積,可以把兩個大數轉換成a1 + a2*x + a3*x^2......的形式,利用FFT快速求值。 #include <iostream> #include <cstdio>