詳解STL中map的用法

  c++  Map是STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在編程上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅/黑樹狀結構(一種非嚴格意義上的平衡二叉樹),這顆樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的,後邊我們會見識到有序的好處。  1. map的建構函式   map<int,

STL中的優先隊列知識

很無奈呀,以前學習的知識都給忘掉了,這都是不及時複習,學習一遍就扔掉所導致的,所以時常複習是非常必要的,有些東西急不來,他們通過量來提高自己的能力,你呢?你沒有那麼長的時間,所以就只能通過學習一次,就一直記住,時常的複習來,彌補自己時間不充足的缺點。發現自己越來越難靜下心來了,都是玩遊戲導致的呀。呵呵,自己放縱的太狠了呢。睡眠不足哈,一天都學習的不是很好。言歸正傳-----優先隊列,是一個好東西哇,能夠解決你取東西的最佳化。當然我還是很希望能夠多看一看網上關於優先隊列的知識的,我呢,找了一點:在

經典問題-漢諾塔(hanoi)

我認為如果一個人是為了學習知識而學習知識,那麼就算做題沒有別人做的多,牛,那麼他也是成功的。因為他學知識始終是為了豐富自己的大腦,讓自己成為一個更合格的人。這個知識點,我做題真的不少了,都是關於漢諾塔的問題,但一次也沒有真真正正的去想過這個問題,這是個很好的問題,很古老的問題,期間也有很多傳說,比如說,在一個印度的古廟裡面,有一個漢諾塔的模型,在其中一跟針上,串了64個金片,要求每天只能按要求移動一個金片,當所有的金片都移動到了另外一根針上的時候,世界將不複存在,我們可以證明,移動的次數為2^6

《演算法競賽-訓練指南》第一章-1.11——Uva 10795

真有種想死的衝動,今天極其的沒有效率啊。這個漢諾塔的問題一直都沒有想通,現在也是模糊不清,主要是心理一直都不在這裡。這能咋辦?但還是描述一題目:題目是這樣一種新的漢諾塔,也是只有三個柱子,開始題目都沒讀懂,都不知道有幾個盤子。然後是告訴你哪個柱子上起初有幾個大小怎樣的盤子,這裡要弄清楚,是按照從大到小排列,不然的話,出這個題目一點都沒意思,開始我還在糾結這個問題,我暈。然後有兩種狀態,第一種是最初的狀態,第二種是最後的狀態,問你經過最少的多少步能夠走到最後的狀態。解題的思路:明顯的做漢諾塔那就是

組合公式求模(Lucas_quick_pow_extgcd)

#include <stdio.h>#include <string.h>#include <iostream>#include <string>using namespace std;const int P = 7;int N, M;int fac[11111];void facterial(){fac[1] = 1;for (int i = 2; i < 11111; i++){fac[i] = fac[i - 1] * i;}}int

《演算法競賽-訓練指南》第一章-1.27-UVa 10635

這是道很好的題目,看起來很水,但是確實做出來還是需要你見多識廣,看的題目多了,然後自己做的題目多了才有可能做出來。題目的描述是這樣的,很簡單,就是兩個數組求最長公用子序列,LCS,但是範圍有點大了62500,如果用dp的做法,O(mn)肯定會逾時的。題目中的任何一個資訊都是非常有用的,比如這裡,題目中說明了,不走重複的路,所以也就代表了,兩個數組中不會出現重複的元素。題解還是非常巧妙的,將第一個數組重標號,從1到N,那麼只要對第二組做一個LIS就可以求出最終的答案了。由於LIS也是自己手寫的,其

9.2.2(矩形嵌套_簡單動態規劃)

暈死了,,總算找到了自己錯在哪裡了,,,人家標程用的dp求法是記憶化搜尋,,你的那個記憶化雖然是有了,,,但是,你沒有一次性將結果用好,也就是你沒有一次dp就把結果存過去,看代碼吧:#include <stdio.h>#include <string.h>#include <iostream>#include <string>#define max(a, b) (a) > (b) ? (a) : (b)using namespace std;

《演算法競賽-訓練指南》第一章-1.24-UVa 10755

淚奔了哇,今天就搞了這一道題目,最後這道題目是三維的最大矩陣和的題目。題目描述看了很久都沒看懂,還是看了題解。想說說這種題目,核心的思想還是降維,貪心求解,降維就意味著你要固定除了遍曆的其他維,這道題目,要遍曆z所以要固定其他的兩維x,y,然後就是利用貪心的做法,把所有的和都求出來,然後保留最小的和,需要注意的一點的是,你的那個最小的和,一定要在每次換固定維的時候即使更新,要不然就會出錯,在這上面我犯了幾次錯誤。還有一些作者的牛之處,我就不多說了,真的狠佩服作者靈光的大腦。貼出代碼:#inclu

PKU-1724(DFS + 剪枝)

ROADSTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 8684 Accepted: 3219DescriptionN cities named with numbers 1 ... N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that

ODBC-API(動態查詢)

動態查詢的例子.其實就是多出了預先處理,和設定參數#include <windows.h>#include <stdio.h>#include <sql.h>#include <stdlib.h>#include <sqlext.h>#include <string.h>#include <iostream>/* *一般情況下,如果返回的錯誤碼retcode < 0,就說明沒有處理得當,就是錯誤的

A-ROADS(PKU1724_dijkstra + 優先隊列)

ROADSTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 8690 Accepted: 3221DescriptionN cities named with numbers 1 ... N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that

《演算法競賽-訓練指南》第一章-1.25-LA 2965

題目中的描述是這樣的,選取最多的元組使得所選取的元組中的相同的字母的個數為偶數。剛開始用的枚舉,明顯有點暴力了,但看到時限那麼長,就試了試,逾時。但是好像也不像逾時的樣子呀,2^24 = 16777216 * 24 = 4億哇,也不會超過18S哇。誒,不知道是怎麼回事,反正是過不了。題解中介紹的方法是,中途相遇法。也就是利用如果有結果的話,必定是兩個相等的數異或,所以,先把前面的N/2個結果存起來,然後在後面的N/2個中尋找,這樣速度就會直線下降,首先2^24

《演算法競賽-訓練指南》第一章-1.12_LA 3971

這道題目非常的不錯!就是你看著非常有思路也想作對的,但是其中就是給你設定了很多的陷阱讓你做不出來,這道題目對於演算法知識很紮實的人來看,應該是一道水題,但是對於我這種演算法知識一點都不紮實的人來說,這題做出來就出奇了!這題是一個綜合的題型,考察到的知識點分別有:其一、vector的運用,一個vector量是一個鏈表型的數組,但是如果開多一點,一個vector的數組,那可就是一個鄰接表了,這對於建立那些資料量非常大的資料模型來說,可謂是非常的方便。其二、map的應用,其實呢,你把所有的種類都存到一

《演算法競賽-訓練指南》第一章-1.26_LA 3882

這道題目悲劇了,約瑟夫環的數學解決辦法,這從來沒聽過呀。上網查,有了點眉目,也確實是這麼回事,思想是這個樣子的,因為你每次報數都會去掉一個人,咱如果不考慮編號,就拿人(人都是不同的。)來說,只要你定好了開頭,那麼肯定是唯一的那個人是最後一個留下來的,開頭不變,那個唯一的人也是不會變的。其實咱們現實生活中玩這個遊戲也是按照:去掉一個人,重新排號,然後去掉一個人,再重新排號,再去掉一個人,然後得出最後一個人。這其實是符合我們常識的,但是咱們解決問題可就麻煩了點,就是我們怎麼區別這些人呢,當然是要給每

《演算法競賽-訓練指南》第一章-1.13_LA 3635

這道題目好!非常好,雖然自己沒有AC。但是,情有可原吧,當然沒有AC就是沒有AC,但是卻是因為自己用了自己寫的PI導致沒有AC。這個不知道可不可以原諒呢?題意是這樣的,有N個pie,有F個朋友,讓你把N個pie分成F

逆波蘭式的遞迴寫法

逆波蘭式,又叫做尾碼運算式。可用的可能性並不是很大;但是自己知道就好:#include <stdio.h>#include <string.h>#include <string>#include <iostream>#include <math.h>using namespace std;char s[11];double exp(){scanf("%s", s);switch(s[0]){case '+': return exp()

《演算法競賽-訓練指南》第一章-1.28_UVa 10891

這個題目真好,我感覺這才是真正的動態規劃的魅力之處。實在是太美妙了。我描述一下這個題目,兩個人A and

Hdu-1180(詭異的樓梯)

C - 詭異的樓梯Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d &

《演算法競賽-訓練指南》1.14-UVa 11520

這道題目一次AC,比較簡單。很開心。貼出代碼:#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <string>#include <algorithm>using namespace std;const int start = 'A';char map[15][15];int N;void init(){for

HDU-1005(矩陣二分快速冪)

Number SequenceTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 78704    Accepted Submission(s): 18378Problem DescriptionA number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(

總頁數: 61357 1 .... 21718 21719 21720 21721 21722 .... 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.