STl訓練每個題的總結

2021-08-13 11:21:01 字數 3491 閱讀 5596

stl訓練每個題的總結

1.i can guess the data structure

分別定義三個容器,依次把資料往裡放就行,然後再判斷頂部的元素是否匹配。注意優先佇列的優先性

2.easy problem from rujia liu

關鍵容器為的定義map

#define all(x) x.begin(),x.end()

#define ins(x) inserter(x,x.begin())用於上述兩個集合操作

10.team queue

定義兩個佇列,分別記錄團隊數和團隊內部成員

然後就是插隊和出隊操作了

11.ugly number

容器set型,將2,3,5定義為乙個常量陣列,逐步往上乘,再入隊就行了,但是要判斷set裡面之前存不存在

12.unix is

關鍵先找出最大的字串個數,然後算出行數和列數,為保證列數最少,所以行數就為(maxcol-m)/(m+2)+1,列數就為(n-1)/col+1;之後再一列一列的遍歷輸出即可

13.database

同理將每個單元格化為整數對,對每個字串進行了編號,再每兩行遍歷比較即可,

另外使用了結構體的話,結構體中不含結構體,所以要在結構體中對小於號進行過載

14.pga tour prize money

先根據前兩輪成員選出晉級選手,之後根據後兩輪成績選出獎金量,另外注意獎金平分情況,和業餘選手獲的名次情況

15.the letter carrier』s rounds

先將mta中使用者列表儲存下來,之後根據每個請求分離出mta和使用者名稱,之後檢查收件人是否存在,根據實際情況來輸出

16.alignment of code

定義兩個容器,vector word[1000],int a[1000]前者用來儲存每行的資料,後面用來記錄每列的最大長度,之後再遍歷輸出即可,如果不夠輸出空格即可

note:用到了streamstring 操作

17.ducci sequence

定義乙個結構體型別的map容器,經過最多1000步改變判斷是不是與map中已經有了,有了則說明迴圈了

18.throwing the card

第一張牌扔掉,留下第二張牌,定義head=1;tail=n+1;來遍歷判斷陣列中的元素,之後a[tail++]=a[head++];

19.foreign student

定義map

int,int>,int>> 將資料存入map中

note:m[make_pair(a,b)],利用輸入的兩個大小判斷,如下:

a < b ? ++m[make_pair(a, b)] : --m[make_pair(b, a)];,最後判斷是不是為0即可

20.compound word

將輸入的字串輸入set容器之中,之後對遍歷整個set,再利用find函式,和string.substr()函式,和find函式一樣,可以自己定義查詢的上下界

21.symmetry

將每個點的座標讀入set容器,之後對稱查詢有沒有另外一點存在即可,不過本題的特殊處理方法應該注意

22.borrowers

首先定義乙個結構體,儲存書的作者或狀態,map,vector分別儲存書名——作者狀態和書名,之後遍歷判斷哪些書還在架子上並分情況輸出即可

23.bug hunt

分成兩個部分,讀入資料,和檢查bug子函式,在讀入資料時又應該區分為賦值和定義語句,如果是賦值語句的話再次檢查右邊值是否初始化過,和左邊值是否越界就行了

24.searching in the web

首先讀入文章,再讀入指令,判斷是哪種情況分別輸出即可(細節應該注意)

25.updating a dictionary

容器:定義乙個二維map(string,string>容器,然後遍歷判斷即可

26.do you know the way to san jose

首先定義乙個結構體,來讀入,計算並排序地圖資訊,之後根據讀入的指令查詢相應的地圖

27.queue and a

建立結構體,讀入每個主題的資訊,和每個客服的資訊,之後根據具體資訊處理即可,再處理部分有點沒弄懂

28.exchange

讀入buy和sell指令,根據讀入的資訊不斷更新資訊,然後輸出相應結果,也有點沒弄懂

29.revenge of fibonacii

字典樹

30.use of hospital facilities

31.單詞數

set容器

32.剪花布條

find函式的應用,find(p1,p2);自定義上下界

33.ignatius and princess ii

next_permutation(a,a+n)的應用

34.a==b?

關鍵是判斷有無小數點然後去掉首尾的0即可

35.排列2

next_permutation(a,a+n)求陣列全排列

36.misha and changing handles

定義乙個結構體來儲存老名字和新名字,遍歷查詢結構體輸出即可

37.usaco orz

dfs遞迴計數,使用set容器進行計數

38.skip the class

結構體儲存資料然後排序依次求答案即可

39.summary

定義乙個set容器,將每兩個數求和,將其放入set容器,最後再輸出和即可

40.alice and bob

41.the kth great number

定義乙個multiset容器,當讀到q時輸出第乙個元素,另外再往裡面放的時候,檢查是不是超過容量了,是的話就要去掉首部的

42.hat』s words

類似與compound words

43.ignatius and the princess iv

只要找到有超過(n+1)/2的數即可

44.what are you talking about

使用map來儲存字典資訊,然後讀入要翻譯的資料即可

45.水果

利用map,和結構體分別來儲存資料,之後按照標準輸出即可,本題是很好的map和結構體綜合使用的文字處理題

46.bad serial inc

47.+

直接用set容器即可,當然也可以用集合的並集運算

48.let the balloon rise

map計數即可

49.boring game

50.windows message queue

使用結構體和優先佇列即可

51.language of fatmouse

類似與what are you talking about

52.list the books

設出乙個結構體,並定義三種排序標準,依次按照標準輸出即可

stl 的容器總結

優先佇列簡單容器 stack 棧 queue 佇列 deque 雙端佇列 priority queue優先佇列 list 鍊錶 vector 向量 map對映 set 幾何 stack 先進後出 queue 先進先出 這是兩個最基礎的容器具體的操作只有 push pop size empty deq...

學習STL的總結

後面的舉例都是vector型別,vector型別的變數是vec 1.stl 標準模板庫 有vector,set list map queue string stack 等。2.這些容器都有初始化 插入 刪除 查詢 遍歷,判斷是否為空 清空 容器大小 3.初始化 vector,set list que...

stl自己的總結

容器分為 序列式 vector動態陣列,deque雙向佇列,list雙向序列。關聯式容器 set,multiset,map,multimap,hash table 容器配接器 stack,queue,priority queue stl的資料結構 biset,string,valarray stri...