Tips.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // change stack size, in bytes
  2. #pragma comment(linker, "/STACK:33777216") // no spaces !
  3. // regex
  4. regex reg(R"[a-z]+");
  5. string str("couCOU");
  6. bool match = regex_match(str, reg);
  7. // builtins
  8. __gcd(x, y);
  9. // for __builtin_*, add suffix l for long, ll for long long
  10. __builtin_ffs(int);// 1 + least significant 1-bit
  11. // __builtin_ffs(1010b) = 2
  12. // __builtin_ffs(0) = -1
  13. __builtin_clz(unsigned int) // number of leading 0-bits
  14. // __builtin_clz(0..010100b) = 27
  15. // __builtin_clz(0) is undefined
  16. __builtin_ctz(unsigned int) // number of trailing 0-bits
  17. // __builtin_ctz(0..010100b) = 2
  18. // __builtin_ctz(0) is undefined
  19. __builtin_popcount(int) // number of 1-bits
  20. // __builtin_popcount(0110b) = 2
  21. __builtin_parity(unsigned int) // number of 1-bits modulo 2
  22. // desynchronise standard i/o
  23. ios::sync_with_stdio(false);
  24. // bits
  25. // enumeratee subsets of mask
  26. subset = mask;
  27. do {
  28. // ...
  29. subset = (subset - 1) & mask;
  30. } while(subset != mask);
  31. // is x a power of 2 ?
  32. !(x & (x-1))
  33. // isolate least significant bit set to 1
  34. x & (-x)
  35. // enumerate permutation
  36. sort(tabl, tabl+n);
  37. do {
  38. //...
  39. } while(next_permutation(tabl, tabl+n);
  40. // liste doublement chainées :
  41. list<type> l;
  42. // push_front, push_back, pop_front, pop_back, insert, erase
  43. // l.sort()
  44. // fusion de deux listes triées : l.merge(l2)
  45. // suppression des doubles consécutifs : l.unique();
  46. // suppression des elements consecutifs satisfant un prédicat l.unique(pred) : pref(a, b) = true si b doit etre supprimé
  47. // suppression de tous les elements égaux à v : l.remove(v)
  48. // l.remove_if(pred)