acm初學的第一周

2021-10-21 21:50:01 字數 3430 閱讀 6655

萬能標頭檔案:#include

stl的簡單應用:

一.string:字串型別 標頭檔案

是表示可變長度的字串行

一定程度上可以替代字元陣列,簡化字元陣列的繁瑣。

輸入輸出的應用:

string s;

cin>>s;

cout

2.通過s[n]可以逐個輸出字元

3.s.size() 返回字串的個數

s.empty() s為空則true 否則false

兩個操作在其他很多stl中也都有涉及,意義普遍類似。

4.getline()函式 簡而言之getline(cin,s) cin為輸入 s為字串名稱

二.sort 一種極為方便的排列函式

需要標頭檔案應用方法:

sort(begin,end,cmp) 無cmp時預設公升序排列 cmp是可以自己定義排序規則的函式:

bool

cmp(

int a,

int b)

int s=

;sort

(s,s+

4,cmp)

;

這樣就可以將陣列降序輸出

sort函式還可以和其他很多知識結合

列如結構體的排序

struct pro

c[10000];

bool

cmp(pro a,pro b)

intmain()

sort

(c,c+n,cmp)

;

三.佇列,stack等特殊形式

1.stack:先進後出

定義方式stacks《型別》 名

empty.size等函式與上意義基本相同

新增pop() 移除最外面的元素

push(a)向其中壓入元素a

stack<

int>s;

s.push(1

);s.push(2

);s.push(3

);s.pop()

;

最後剩餘元素1.2

2.佇列(queue):先進先出 區別是進去後可以從前面先出來

定義方式:queues

empty,size,pop,push 與上基本相同。

back() 返回佇列最後乙個元素。

3.動態陣列(vector):在記憶體中分配一塊連續的記憶體空間進行儲存,可以像陣列一樣操作,但是可以進行動態操作,體現在push,pop上

:push_back(a) 將元素插入最尾端

pop_back() 將最尾端元素刪除

4.優先佇列(priority_queue):可以將輸入的數中最大的排在最前面,並且其先出

size 元素個數 empty 空 pop 移除 push推入

top() 返回優先佇列的下乙個元素

四.其他重要

1.去重 unique:去除陣列中相鄰相同的元素將其藏在後面,需要對陣列進行排序

形式:unique(begin(),end());

while

(cin>>n)

sort

(a,a+n)

;int k =

unique

(a,a+n)

- a;

for(

int i =

0;i < n;

++i)

}

其中相同的元素就被排到了後面

2.生成排列

標頭檔案

bool next_permutation(begin,end);產生下乙個排列

bool prev_permutation(begin,end);產生前乙個排列

3.upper_bound lower_bound

upper_bound(begin,end,value);返回》value元素的第乙個位置

lower_bound(begin,end,value) 返回》=value 元素的第乙個位置

int  a[6]

=;sort

(a,a+6)

;upper_bound

(a,a+6,

2);lower_bound

(a,a+6,

2);

返回 a+3 a+1

4.set、multiset

標頭檔案:形式:sets

兩者可以依據特定的排序準則進行自動排序,但set不允許元素重複,預設由小到大排序

struct new_type

} sets;

運用到了運算子過載,大體意思就是對x,y進行排序,排序先按照x後按照y

操作:s.insert(a) 安插乙個副本a,返回新元素位置

s.erase(a) 移除所有與a相當的元素,返回被移除的個數

s.erase(pos) 移除迭代器pos上的元素,無返回值

s.clear() 移除所有元素

s.count(a) 返回元素值為a元素的個數

s.begin() 雙向迭代器,指向第乙個元素

s.end() 指向最後乙個元素

5.map、multimap

標頭檔案:定義:maps

鍵位,數值 預設按string從小到大排序

操作:m.insert(a) 向其中插入乙個元素a

m.erase(a) 移除鍵值為a的元素,返回個數

m.erase(pos) 移除迭代器上所有的元素

m[key]=value 直接元素訪問

三種插入方式:

mapfloat

>m;

m.insert

(mapfloat

>

::value_type

("robin"

,22.3))

;m.insert

(pairfloat

>

("robin"

,22.3))

;m.insert

(make_pair

("robin"

,22.3))

;

感悟

通過一周的學習增長了許多的知識,也開闊了眼界,但是對於我現在的能力來說還只能熟練的運用string,sort等低難度的stl,其他的知識雖然能夠看懂,嘗試著去練習,但是在做題的過程中很難將其運用上

在之後的日子裡我會更認真的學習acm的相關知識,努力理解,練習這些知識,爭取能夠將其熟練的運用到實戰中去。

ACM集訓隊第一周

字首和計算可以減少時間複雜度,提高執行速度 對於求每一項均是前幾項總和的情況下的部分幾項和或者某一單項的時候使用 一般寫成ans i ans i 1 a i eof即是end of file的縮寫 eof表示檔案結尾,eof 表示檔案還沒有結束。用於多組 不定組 資料輸入時 如 while scan...

python第一周心得 Python第一周總結

變數 不能為系統自帶的內建函式,如def,help,sum等等 變數不能已下劃線數字來開頭,對大小寫敏感 變數後直接接數字,則被賦值為整型,如何加引號則賦值型別為字串str型別 a 1 整型 int b 2 字串 str 用print 直接輸出 a hello print a 在 使用者想要同時輸出...

ACM選修第一周內容整理 3 5

include using namespace std include using namespace std int main else return 0 include include include using namespace std int main cout size a.size e...