--- ###### tags: `2021 師大附中資訊科暑期培訓` --- # 各種競賽技巧 2021 師大附中資訊科暑期培訓 joylintp --- ## bits/stdc++.h ```cpp= // C++ #include <algorithm> #include <bitset> #include <complex> #include <deque> #include <exception> #include <fstream> #include <functional> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> #include <istream> // and more ``` ---- ```cpp= #include<bits/stdc++.h> ``` * 引入大部分的常用標頭檔 * 部分比賽和 Online Judge 不支援這個標頭檔,測機務必先測試可否使用 * 占用較大的記憶體空間,限制較緊時應避免使用此標頭檔 --- ## 整行輸入 ```cpp= getline(cin, s); ``` * `s` 為一個 `string` * 置於 `cin` 後須先讀入一空白行 ---- ```cpp= int n; cin >> n; getline(cin, s); cout << s << '\n'; ``` input: ``` 7 a b cde ``` output: ``` ``` ---- ```cpp= int n; cin >> n; getline(cin, s); getline(cin, s); cout << s << '\n'; ``` input: ``` 7 a b cde ``` output: ``` a b cde ``` ---- ## 輸入優化 ```cpp= ios_base::sync_with_stdio(false); cin.tie(0); ``` * 在使用 `cin` 讀入大量內容時務必使用 * 使用後不得與 C 語言的輸入(`scanf` 等)混用 (可參考 bit.ly/chino_cin 的說明) * 使用後在本機測試時會累積大量輸出後再一次顯示到螢幕上 ---- ## 用 '\n' 取代 endl * 原因與前一則類似 (可參考 bit.ly/chino_cin 的說明) * 大量換行使用 `endl` 會拖慢程式速度 --- ## #define 用 ```#define A B``` 將程式碼中的 `A` 取代成 `B` ```cpp= #define PB push_back // ... v.push_back(5); v.PB(5); // 兩行功能相同 ``` ---- ```cpp= #define REP(i, n) for(int i=0; i<int(n); i++) #define ALL(X) X.begin(),X.end() #define SORTA(X) sort(ALL(X)) #define SZ(X) (int)X.size() vector<int> arr(n); for (int i = 0; i < n; i++) cout << arr[i] << ' '; REP (i, n) cout << arr[i] << ' '; SORTA(arr); sort(ALL(arr)); sort(arr.begin(), arr.end()); ``` ---- **特別注意** ```cpp= #define DOUBLE(A) A+A int a = 5; cout << DOUBLE(a) * DOUBLE(a) << '\n'; // 相當於 cout << 5 + 5 * 5 + 5 << '\n'; 先乘除後加減 ``` output: `35` ```cpp= #define DOUBLE(A) (A+A) int a = 5; cout << DOUBLE(a) * DOUBLE(a) << '\n'; ``` output: `100` --- ## 重新定義型別名 ```cpp= using LL = long long using PLL = pair<LL, LL> LL a = 2147483648; PLL p = {a, a}; ```
{"metaMigratedAt":"2023-06-15T11:44:47.265Z","metaMigratedFrom":"Content","title":"各種競賽技巧","breaks":true,"contributors":"[{\"id\":\"6b95215f-91a7-4eaf-bcfe-d43740108f96\",\"add\":2130,\"del\":186}]"}
    697 views