Блог пользователя stas99

Автор stas99, 12 лет назад, По-русски

Здравствуйте! Я недавно решил попрактиковаться в Java и решить простую задачу про выпуклую оболочку. Мое решение на С++ работает за 0.006 на макс. тесте, А на Java изначально — 0.644, после оптимизаций — 0.373. Мне кажется, что это слишком большая разница (ну не может быть java в 50 раз медленнее! Они утверждают, что Питон за 0.081 заходит!). Прошу вас мне помочь в поиске способа довести решение на java до адекватного времени работы. Сама задача: http://informatics.mccme.ru/mod/statements/view3.php?id=634&chapterid=638#1 Решение на С++: http://pastebin.com/L69S2vGx Решение на Java: http://pastebin.com/HnyTqMuF Заранее благодарен всем за вашу помощь.

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
12 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Объектов наверно слишком много. Надо попробовать поменять массив точек на два массива координат.

А еще compareTo должен возвращать 0 на равных объектах. Кажется, в седьмой джаве иное поведение будет выбрасывать эксепшен.

»
12 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Ну, во-первых, java по умолчанию сразу съедает какое-то количество времени, а в процессе работы разница во времени начинает сокращаться. Во-вторых, сильно похоже, что это на этом сервере какая-то медленная java. Там даже задачи за O(1) работают от 0.1с

»
12 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Ещё, кстати, в данном случае не сильно важно, но локальные переменные могут работать быстрее, а ещё лучше работать со статическими внутренними классами.