洛谷OJ記錄

2022-06-26 12:33:13 字數 2574 閱讀 1712

記錄一哈刷洛谷的一些技巧和函式

萬能標頭檔案#include

它幾乎包含了你能用到的所有標頭檔案。。。。

#include #include #include #include #include #include #include #include #include #include #include #include #include

首先要加標頭檔案:#include

setprecision、fixed、showpoint

cout<

sort( begin, end) / sort( begin, end , cmp)

不傳遞cmp時,預設是公升序

bool cmp(int a, int b)

int main()

; sort(a,a + 4,cmp);//a+n表示 a之後n*sizeof( type )的記憶體位址

}

stl的sort函式在資料量大時採用快排,將分段再遞迴排序,一旦分段後的資料小於某個值,就改用插入排序。如果遞迴層次過深,還會改用堆排序。這樣就結合了各類演算法的所有優點。

vector是順序儲存的,支援隨機訪問,其實和陣列沒什麼區別,只不過加了很多方法

vector的初始化、重分配、插入刪除:

#includevector

v;//

宣告,不分配記憶體

vectorv(n);//

宣告並分配n個sizeof(type)的記憶體

vectorv(num,value);//初始化num個值為value的vector

v.capacity();

//元素預定的上限,預設是元素個數+1

v.size();//

當前元素數量

v.reverse(

int n);//

給v重新預約元素上限(v.capacity()),並不直接改變記憶體大小

v.resize(int n);//

不僅把v.capacity變為n,還分配記憶體

v.push_back(type elem);

//不管前面有沒有空的地方,在末尾新分配一塊記憶體儲存

v.insert(iterator v.begin()+n , type elem);//

新分配乙個記憶體,從指向的元素開始把所有的都往後移,elem取代指向的元素位置

v.erase(v.begin()+n);//

刪除第n個元素,會重新生成乙個vector

v.erase(v.begin()+a , v.begin()+b);//

從 a 位置開始刪除到 b 前乙個位置

1

//迭代器訪問

2 vector::iterator it;

3for(it=vec.begin();it!=vec.end();it++)

4 cout<<*it《這裡面的門頭就大了

#includestring s = "1234";

s.erase( int pos, int n);//刪除從pos 位開始的n個字元

s.erase( s.begin()+n );//刪除指定位置的字元

s.erase( s.begin()+l, s.begin()+r );//刪除從 left 位開始的到 right前一位的所有元素

s.find( string s);//返回子串s 第一次出現的下標,如果不存在,返回string::npos,這是乙個unsigned int 的 -1,如果用乙個整數變數接收它,那就能轉化為int的-1

s1 < s2; // 按asc碼序(字典序)進行比較

s1.compare(s2);//s1s2,返回1。 同理對於中的strcmp(s1,s2)也是如此  

//字串的反轉

#include

reverse(str.begin(),str.end());

//字串擷取

s.strsub(pos);//擷取pos 開始的後續所有字元

s.strsub(pos, n);//擷取 pos 開始的後n 個字元

//字串替換

s.replace(pos , n , s2);//用s2替換pos 開始後的n個字元

string和int的轉化:

to_string( num );

#includeint a = 111;

double b = 1.11;

string s = to_string(b);

atoi(),stoi() 包含在#include,不是c++11的可以在#include。作用是將字串轉化為int型。區別是stoi的形參是const string*,而atoi的形參是const char*。c_str()的作用是將const string*轉化為const char*。

#includestring s1("1234567");

char* s2 = "1234567";

int a = stoi(s1);

int b = atoi(s2);

int c = atoi(s1.c_str());

洛谷等oj上提交記錄一覽

compare error編譯錯誤 提示英文編譯資訊 wa即wrong answer錯誤答案 re即runtime error 這個的問題比較複雜 1 陣列開得太小了,導致訪問到了不該訪問的記憶體區域 2 發生除零錯誤 3 大陣列定義在函式內,導致程棧區耗盡 4 指標用錯了,導致訪問到不該訪問的記憶...

洛谷OI記錄

2018 12 06 07 37 註冊了洛谷 2018 12 06 灰名 2018 12 07 07 43 成為了小牛。2018 12 08 08 25 成為了小犇。2018 12 08 09 39 第一題黑題祭 2018 12 09 09 05 成為了中牛。2018 12 12 07 55 ak新...

洛谷dp記錄

線性dp,分開處理資料 include using namespace std const int n 300010 int m,s,t,dp n dpt n 分開計算跑步還是等待 intmain 能閃現就閃現 else 不能閃現就都記錄下來 for int i 1 i t i cout no en...