原创 【二叉堆、堆排序】

推薦: 某cppblog wutianqi'sblog 堆排序實現: #include <iostream> using namespace std; // 輸出當前堆的排序狀況 void PrintArray(int data[]

原创 【並查集+壓縮路徑】

  並查集:(union-findsets) 一種簡單的用途廣泛的集合. 並查集是若干個不相交集合,能夠實現較快的合併和判斷元素所在集合的操作,應用很多,如其求無向圖的連通分量個數等。最完美的應用當屬:實現Kruskar算法求最小生成樹。

原创 【有向圖的最小樹形圖---朱劉算法】模板

最小樹形圖 找到一個關於樹的學習網址,贊~  http://acm.nudt.edu.cn/~twcourse/Tree.html 無向圖的最小生成樹可以用prim算法或者Krusual算法求,而有向圖的最小生成樹也叫最小樹形圖,它

原创 【2-SAT】

具體推薦先看這個《由對稱性解2-SAT問題》算法合集之《由對稱性解2-SAT問題》  再看趙爽的2-SAT解法淺析  看完了就基本明白2-SAT是怎麼一回事,說白了就是約束!而做這種題的關鍵是建圖!其他的就套模板,什麼強連通縮點,拓撲染色

原创 【最大子矩陣】hdu 2870

該題首先轉化爲只含有a,b,c的矩陣,然後對每一行dp求該列連續相同字母的最大高度,然後就可以每行每行地gao,又轉化爲求最大矩陣面積,就像hdu  1506一樣,迭代地求左右>=當前高度的下標,hdu 1506代碼看這裏 #includ

原创 【歸併樹—求第K小數】POJ 2104/HDU 2665

歸併樹 O(logn*logn*logn) for each query,很慢的說,劃分樹版http://blog.csdn.net/leolin_/article/details/6696801 /* //1,建立歸併樹後我們得到了序

原创 【揹包模板】

int V;//容量 //01 void zeroone(int cost,int val){//費用,價值 int i; for(i=V;i>=cost;i--){ if(dp[i]<dp

原创 【轉】劉汝佳黑書POJ題目

一.動態規劃參考資料:劉汝佳《算法藝術與信息學競賽》《算法導論》推薦題目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1141  簡單http://acm.pku.edu.cn/JudgeOn

原创 【最長迴文子串——Manacher算法】POJ 3974/HDU 3068

轉載: O(n)迴文子串算法     這裏,我介紹一下O(n)迴文串處理的一種方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-line

原创 【最大團模板】

ZOJ 1492 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=492 /* 最大團 = 補圖G的最大獨立集數 ———>最大獨立集數 = 補圖G'最大團 */ //

原创 【網絡流各種模板】

EK 複雜度O(V*E*E) #define N 204 int c[N][N];//邊容量 int f[N][N];//邊實際流量 int pre[N];//記錄增廣路徑 int res[N];//殘餘網絡

原创 各種排序算法分析+實現

以前是直接用sort,對各種排序算法模模糊糊的,到了期末,無無聊聊地整理了各種常見的排序算法,順便複習一下數據結構:) 1、直接插入排序 #define N 1005 //插入排序(穩定的排序) //複雜度O(n^2) //基本思想:依

原创 【轉】POJ 圖論、網絡流題目

POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449題意:經典問題:K短路 解法:dijkstra+A*(rec),方法很多 相關:

原创 【組合數取模】

zoj 3557 Lucas定理:只適用於p爲素數 #define N 10005 // Lucas定理求解C(n,k)%p, p是素數 // C(n,k)%p = C(n%p,k%p)*C(n/p,k/p)%p // C(n,k)%p

原创 【LCA模板題】POJ 1330

RMQ版 #define N 10010 struct edge{ int v; int next; }e[2*N]; int ecnt; int head[N]; bool vis[N]; int n;//點數 int