一.常量
宣告常量可以方便**的修改,提高復用性.
const
int maxn=
10000
;const
int n=
10000+10
;const
double exp=
1e-6
;
同時,宣告常量也可以減少重複運算,提高**速度,例子如下:
string s;
cin>>s;
for(
int i=
0;i) s[i]
='a'
;
view code
上述**中,可以利用常量儲存s的長度,減少重複計算量.
string s;
cin>>s;
const
int len=s.
length()
;for
(int i=
0;i) s[i]
='a'
;
register int i=0;
頻繁使用的變數可以使用這種方法宣告,常用於for()函式內.
for(register int i=0;i<999999;i++)
機器會盡可能多地將這種變數放入cpu中的暫存器內,而不是記憶體裡,從而提高效率.但要注意:暫存器變數不能使用指標.
三.編譯優化(o1/o2/o3)
//o1優化
#pragma gcc optimize(1)
#pragma gcc optimize("o1")
//o2優化
#pragma gcc optimize(2)
#pragma gcc optimize("o2")
//o2優化
#pragma gcc optimize(3)
#pragma gcc optimize("o3")
四.萬能標頭檔案(oi競賽請慎用)
c++中的萬能標頭檔案包含了幾乎全部的c++標頭檔案,引用方法如下:
#include
這樣就可以代替下面的一大堆頭檔案了.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//
…
但是並不是所有oi競賽都支援使用,所以還是不太推薦在競賽上使用.
關於C C 的各種常見讀取資料操作
例1 題目描述 將乙個字串str的內容顛倒過來,並輸出。str的長度不超過100個字元。輸入輸入包括一行。第一行輸入的字串。輸出輸出轉換好的逆序字串。樣例輸入 i am a student 樣例輸出 tneduts a ma i 用scanf讀取一行帶空格字串 include includeint ...
c c 各種排序
一 各種排序方法的時間 空間複雜度情況 1 直接插入排序 比較次數 最少n 1次 最多 n 1 n 2 2 移動次數 最少0 最多 n 1 n 4 2 使用乙個輔助儲存空間,是穩定的排序 2 折半插入排序 比較次數 最少與最多同,都是n log2n 其中2為底,下邊表示同 移動次數 最少0,最多時間...
C C 實現的各種排序
直插排序 void insertsort vector int arr else break 氣泡排序 void bubblesort1 vector int arr if flag return void bubblesort2 vector int arr if flag return 快速排序...