Грабли: различия между версиями

Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 51: Строка 51:
* [http://acm.timus.ru/help.aspx?topic=cpp Timus — Как писать решения на C/C++] (Раздел «Особенности компилятора по сравнению с другими 32-битными компиляторами C/C++»)
* [http://acm.timus.ru/help.aspx?topic=cpp Timus — Как писать решения на C/C++] (Раздел «Особенности компилятора по сравнению с другими 32-битными компиляторами C/C++»)


== Приоритетная очередь работает быстрее чем сет ==
== Приоритетная очередь работает быстрее, чем сет ==
* Несмотря на равную асимптотику, приоритетная очередь имеет много меньшую константу, чем сет. Поэтому некоторые задачи можно сдать только с приоритетной очередью.
* Несмотря на равную асимптотику, приоритетная очередь имеет много меньшую константу, чем сет. Поэтому некоторые задачи можно сдать только с приоритетной очередью.

Версия от 18:08, 1 мая 2019

Ввод и вывод

cin/cout работает медленнее scanf/printf

endl сбрасывает буфер вывода после перевода строки

Различные компиляторы по-разному округляют вещественные числа с последним дробным разрядом 5

Аккуратнее с %lld и %I64d: %lld предпочтительнее

Вещественные числа

Вещественные числа нужно использовать с осторожностью; функции <math.h> работают с вещественными числами

Если не хватает точности double

  1. Меняем все double на long double;
  2. Меняем все вызовы cstdio (scanf/printf) на вызовы iostream (cin/cout);
  3. Добавляем l ко всем функциям cmath (sqrt -> sqrtl, atan2 -> atan2l);
  4. Сдаём под g++.

Особенности функций

Метод .size() у контейнеров STL возвращает беззнаковое число

В <ctype.h> функции классификации символов (такие как isupper()) могут возвращать не только 0 и 1

Разное

В <math.h> Visual C++ уже заняты глобальные имена j0, j1, jn, y0, y1, yn

Приоритетная очередь работает быстрее, чем сет

  • Несмотря на равную асимптотику, приоритетная очередь имеет много меньшую константу, чем сет. Поэтому некоторые задачи можно сдать только с приоритетной очередью.