Splay樹簡介

【轉】電腦演算法和資料結構中,有各種多樣的樹,比如AVL樹,紅/黑樹狀結構,B+樹等等,這幾種樹主要的主要目的是盡量保持平衡,保證即使在最壞情況下,時間複雜度是O(logN),也就是說,從根節點到最底層的葉子節點,路徑不會相差太遠。比如B+樹,它通過節點的分裂來保持盡量平衡,而且這種樹比較散,高度不高,訪問路徑都比較短,比較適合在資料庫中作索引。但是今天我要說一說splay樹,我不知道中文叫什麼名字,也許該叫它“變根樹”。Splay樹與眾不同的是:它並不一味追求平衡,而是追求整體的效率。當一個節

poj-3321 Apple Tree ****

/*  看了網上的代碼。。再自己寫了一個。。。( 網上很多代碼都是預設輸入的資料u是v的父節點。。 也能AC。。 但不嚴謹。。)【轉】思路:樹狀數組。這道題重點怎麼建立樹到樹狀數組的映射關係:利用dfs遍曆樹,對每個節點進行兩次編號,第一次搜到第i個節點時的深度dep,為這個節點管轄區間的上限low[i](也為這個節點的下標),然後搜這個節點的子節點,最後搜回來後的深度dep,為這個節點管轄區間的下限high[i]。接下來就是樹狀數組部分了。*//* * 3321 *

poj-1125 Stockbroker Grapevine *

/* * 水題~ floyd演算法 0ms * * 求每對頂點間的最短路, 然後選擇 最大值 最小的那個頂點作為起點~*/#include <cstdio>#include <cstring>using namespace std;const int maxN = 100 + 5;const int inf = 10000000;int n, totEdgeNum, w[maxN][maxN];/*struct SEdge{ int u, v,

poj-3259 Wormholes **

/* * Bellman_Ford 判斷負環 * * 注意可能有平行邊,只需保留最小的權值 * * 【轉】 * 此題雖然是最最基礎的bellman_ford,但用來加深理解還是可以的: * 1)bellman_ford 究竟要relax多少次,當從1到n存在且存在1 -> 2, 2 -> 3 ...n-1 -> n這樣的邊時, *

poj-3264 Balanced Lineup *

/* * 入門題 * RMQ Sparse-Table : O(nlgn) - O(1) * * 2000ms... **/#include <cstdio>using namespace std;const int maxN = 50000 + 10;const int maxK = 50;int height[maxN], n, q;//記錄的是座標int dMax[maxN][maxK], dMin[maxN][maxK];inline int max(int lhs,

poj-1087 A Plug for UNIX ***

/* * 1087.cpp * 第一道最大流題目, 看了網上的解法, * http://www.cppblog.com/NARUTOACM/archive/2010/03/01/108680.html * 見圖:其實可以把圖中的邊的方向全部反過來,就可以這樣理解:T是總電源, 單位時間內可以給A、B、C、D提供1度電(ABCD是原來就有的電源插座),   而根據每個裝置的插座類型, 相應的插座能給裝置提供1度電.。S看做總的消耗功率。。每個裝置對總消耗功率的貢獻是1.。  

poj-1062 昂貴的聘禮 **

/* * 最短路, Dijkstra(數組實現) * * 建圖 : 若 物品u 能用物品 v 再加 錢 a 交換, 則 邊權值w(v,u) = a * 初始: d[i] = 物品i的直接價格 * * 注意等級的限制, 酋長的等級不一定是最高的~ 應枚舉等級的範圍,起點不在範圍內的邊不能鬆弛~ * **/#include <cstdio>#include <cstring>using namespace std;const int inf =

poj-2421 Constructing Roads *

/* * 蠻水的一道MST Kruskal, 鏈表實現 * * 預先處理: * 根據已有的邊,把相應的集合合并。。再Kruskal * * 另一種方法: * 把已有邊的權值改為0 **/#include <cstdio>#include <algorithm>using namespace std;const int maxN = 100 + 5;int n, totEdgeNum, G[maxN][maxN], q, ans;struct SEdge{

KMP 演算法並非字串尋找的最佳化

  演算法書和資料結構書對KMP演算法多有介紹,稱只需對字串掃描一遍不需回溯云云.然而,它恐怕只應該作為一種思想存在;用於實際的字串尋找並不理想.要費勁心血實現和最佳化它,才能在特定的字串上略微超過(也可能略微遜過)std::search.   KMP演算法的基本思想,是利用需要匹配字串的自身資訊來避免回溯.(這裡討論的演算法是以C/C++為程式設計語言,因此下標索引以0開始)   例如:字串PAT=”abcabcde”,裡面第二段的abc和PAT開頭的字元是匹配的.  假如我們有個要尋找的字串

poj-2418 Hardwood Species *

/* * 二叉尋找樹練習 * 2418.cpp * * Created on: 2011-7-21 * Author:*/#include <cstdio>#include <cstring>using namespace std;const int maxs = 10000 + 5;const int ROOT = 0;struct SData{char name[35];int num; SData *left, *right; SData()

演算法導論-15-7 達到最高效益的調度

【轉】問題:假設有一台機器,以及在此機器上處理的n個作業a1,a2,...an的集合。每隔作業aj有一個處理時間tj,效益pj,以及期限dj。機器在一個時刻只能處理一個作業,而且作業aj必須在tj連續時間單位內不間斷地運行。如果作業aj在期限dj之前完成,則獲得效益pj,但如果在期限之後才完成,則沒有效益。請給出一個動態規划算法,來尋找能獲得最大量效益的調度,假設所有的處理時間都是1到n之間的整數。——————————分析:其實這個問題類似於01背包問題。1.   

poj-1874 Trade on Verweggistan *

/*排序..水。。 * * WA的話試試以下2租資料 * 1 * 2 11 16 * 2 * 2 11 16 * 2 1 3 * 輸出應該是 * Workyards 1 * Maximum profit is 0. * Number of pruls to buy: 0 * * Workyards 2 * Maximum profit is 16. * Number of pruls to buy: 2 *

最大流的演算法小結 Algorithm for Maximum Flow

【轉】————————————————————————————演算法名稱 複雜度概要增廣路方法 Augmenting path method (Ford Fulkerson method)一般增廣路演算法Labeling algorithmO(nmU)在殘留網路中,每次任意找一條增廣路徑增廣。容量縮放增廣路演算法 Capacity scaling algorithmO(nm logU)在殘留網路中,每次找一條有最大可增廣容量和的增廣路徑增廣,即殘留網路中源到匯的最長路。最短增廣路演算法

Ubuntu 10.04 控制台禁止vga mode

發現 Ubuntu 10.04 的控制台模式總是會切換到一個預設的VGA模式(好像是640*480),試了下面的方法都不起作用:1、編輯/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT行的quiet splash後面加text2、同上一行,把quiet splash換作nomodeset noplymouth3、把GRUB_TERMINAL=console前的注釋去掉 用盡了各種辦法都沒效果,懷疑是被作為一個服務了,找遍了rcX.d/rcS.d也沒找到,

二維模式(矩陣)匹配(Rabin-Karp演算法推廣到二維)

本文著重討論由Rabin-Karp演算法推廣到二維來解決二維模式比對問題的演算法。問題: 在一個n1*n2的二維字元組成中搜尋一個給定的m1*m2的模式。參考《演算法導論》習題32.2-3.分析:1. 首先簡單介紹一下Rabin-Karp演算法

poj-3368 Frequent values ***

/* 480ms * poj-3368.cpp * Created on: 2011-10-14 * * * RMQ: * 10 3 -1 -1 1 1 1 1 3 10 10 10 2 3 1 10 5 10 0 * * 1、value[i]:第i個位置的值 * 2、對每個值,記錄該值最後出現的位置,endPoint * 3、記錄每個值的前面一個值: prePointValue,

對幾個安全概念的體會

型別安全:指程式設計語言在任何時刻總是知道資料的類型。例如函數參數類型要求string型,則必須傳string型資料給它,否則就會出錯;如果傳其它類型的資料,程式設計語言也能正常工作不會出錯,則該程式設計語言不是型別安全的。 安全執行緒:指函數可以被多個安全執行緒的調用(注意,是安全的調用,但函數不一定同時工作),我理解的是它和可重新進入的區別在於“同時”二字,安全執行緒可以通過訊號量來保證安全訪問全域變數或靜態變數,但無法保證同時工作,因為要等訊號量,而可重新進入是根本不使用全域變數或靜態變數

程式員技術練級攻略

月光部落格6月12日發表了《寫給新手程式員的一封信》,翻譯自《An open letter to those who want to start

演算法導論-15.5-4

Exercises 15.5-4   Knuth has shown that there are always roots of optimalsubtrees such that root[i,j-1]<=root[i,j]<=root[i+1,j] for all1<=i<=n. Use this fact to modify the OPTIMAL-BST procedure to runin Θ(n^2) time.———————————————————————

POI2000 #7 Viruses(自動機)

Description Binary Viruses InvestigationCommittee detected, that certain sequences of zeroes and ones are codesof viruses. The committee isolated a set of all the virus codes. Asequence of zeroes and ones is called safe, if any of its segments (i.e.

總頁數: 61357 1 .... 10330 10331 10332 10333 10334 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.