第二週集訓vjudge總結

2021-10-02 15:31:58 字數 2840 閱讀 8630

1.初始化函式【c/c++】

(1) memset是計算機中c/c++語言初始化函式。作用是將某一塊記憶體中的內容全部設定為指定的值, 這個函式通常為新申請的記憶體做初始化工作。

(2)函式原型:extern void *memset(void *buffer, int c, int count)

buffer:為指標或是陣列

c:是賦給buffer的值

count:是buffer的長度

(3)c中: #include

c++中: #include

(4)要點: memset可以方便快速的清空乙個結構型別的變數或陣列。

例1. 用在對定義的字串進行初始化為『 』或『/0』;

char a[

100]

;memset

(a, 『/

0』,sizeof

(a))

;

例2. 用在對定義的數字陣列進行初始化為0或-1等;

int a[

100]

;memset

(a,0

,sizeof

(a))

;

2.比較函式

在用c寫題時,涉及比較大小尋找最大最小值時,可以借用c++的min/max函式。

注:**前應加上:

#include

using namespace std;

3.排序函式

c語言中排序需要敲出排序部分(冒泡,選擇,插入等),但因容易書寫的演算法效率並不高(時間複雜度有點高)效率高的排序演算法寫起來又太複雜。因而在寫c中若涉及排序問題,可以呼叫c++的sort函式。

(1)sort()函式給整型陣列排序

sort(乙個位址a(從哪乙個開始排序),(好好思考這個位置)乙個位址b(你想要停止排序的那個元素的後一位位址),乙個控制排序規則的函式);好像有點抽象,簡單來說,就是從a到b-1的所有元素參與排序,如果是公升序,那麼排序規則函式不用寫,如果是降序或者是其他自定義排序,請看後文cmp函式書寫。

#include

#include

using namespace std;

intmain()

;sort

(a,a+11)

;for

(int i=

0;i<

11;i++

)return0;

}

特別注意的是若從a[0]-a[10]排序,寫的是sort(a,a+11)。

(2)其他的排序方式

如果不寫排序規則函式,sort函式預設從小到大排序,現在我們想從大到小排序怎麼辦?

#include

#include

using namespace std;

bool cmp

(int a,

int b)

intmain()

;sort

(a,a+

11,cmp)

;for

(int i=

0;i<

11;i++

)return0;

}

只需要加上:

bool cmp

(int a,

int b)

並且在呼叫sort的時候第三個引數寫cmp就行了。如sort(a,a+11,cmp)是給a[0]到a[10]排序。

(3)string類也可以用sort排序

#include

#include

#include

using namespace std;

bool cmp

(string a,string b)

intmain()

;sort

(a,a+

4,cmp)

;for

(int i=

0;i<

4;i++

)printf

("%d\n"

, a[i]);

return0;

}

(4)以結構體為例的高階排序以題目為例講解:

第二週集訓總結

這一周下來主要是對上乙個週看的前三章做乙個 的實現,雖然 有模板和例題,但是仍然有幾個演算法沒有完成實現。對於第一章的內容,我關注的重點是二進位制轉化和二分,在這週的最後幾天也有狂刷二分的題 雖然並沒有刷太多道 但是對二分的題目還是不太熟悉。昨天的最後一道題,一開始並沒有想到用二分,但是在別人拿到一...

(7 6 7 20)集訓總結

電腦鍵盤莫名出鍋,打字真的不易,所幸之前已經寫了一篇 關於最近 7.6 7.20 集訓的乙個總結 個人認為集訓最有意義的是模擬賽吧,畢竟這麼多人一起。對於模擬賽略做分析?廢話較多 加粗的比較有價值?首先有幾次的模擬賽有些頹廢,後來想起來覺得挺惋惜的。有時候看一會覺得沒有什麼思路,就比較頹,覺得就這樣...

2019 7 22集訓總結

今天上午看了位運算的部分知識,複習了以前看過的遞迴,學習了快速冪,對書上的例題深入挖掘了一下,下午把 熟悉了好幾遍,看懂了位運算在快速冪中的應用。晚上打了比賽,讓我意識到自己和別人的差距,還有很長的路要走。堅持下去的才是勝利者,心態的問題,計畫的問題,都是我要不斷改進的問題。不管怎麼樣,放手去幹,下...