Một số thủ thuật C++ giúp viết code nhanh hơn trong lập trình thi đấu:
- Kiểm tra chẵn/lẻ không dùng %:
if ((n & 1) != 0)// lẻ, else // chẵn. Dựa trên bit thấp nhất (LSB). - Nhân/chia nhanh 2^n bằng dịch bit:
y = x << 2;(nhân 4),y = x >> 2;(chia 4). - Hoán đổi không biến trung gian:
x ^= y; y ^= x; x ^= y;(dùng XOR). - Duyệt chuỗi không cần strlen():
for(int i = 0; s[i]; i++)(dừng khi gặp '\0'). - emplace_back() thay push_back(): Nhanh hơn, không cấp phát bộ nhớ trung gian.
- Hàm GCD built-in:
__gcd(x, y). - Kích thước mảng: Trong main ~10^6, toàn cục ~10^7.
- Chữ số đầu tiên (MSD) bằng log:
double k = log10(n); k -= floor(k); int x = pow(10, k); - Số chữ số bằng log:
int digit_count = floor(log10(n)) + 1; - Kiểm tra lũy thừa của 2:
bool check = x && (!(x & (x-1))); - Algorithms kiểm tra điều kiện:
all_of, any_of, none_ofvới predicate. - Copy container:
copy_n(src, 5, dest); - Tạo dãy tăng dần iota():
iota(arr, arr+5, 15);→ {15,16,17,18,19}. - Hằng số nhị phân:
int x = 0b1101;(giá trị 13). - Từ khóa thay toán tử logic:
and, or, notthay&&, ||, !.