Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: коллекции Java
1
  1  SKYDOS [Vladimir SU] [skydos.blogspot.com], 17 августа 2010 г. 10:09:10
      Мухамадеев Руслан Азатович
да, именно из-за отсутствия struct (и прочих вещей) в ява я перешел на шарп.
  2  Мухамадеев Руслан Азатович, 16 августа 2010 г. 19:35:22
      SKYDOS, Маскин М.В.
спасибо вам за советы)) но я думаю, что некоторые задачи все - таки предется писать на C++ (где время или памяти впритык) кстати реализовал на С++ эту задачу с помощью STL прошла за 0,19 сек, вот такая плата за объектно - ориентированную модель :) в Java коллекции только для объектов (соответственно она использует классы оболочки для стандартных типов, что снижает эффективность), а в
С++ структуры могут включать стандартные типы
  3  SKYDOS [Vladimir SU] [skydos.blogspot.com], 16 августа 2010 г. 18:52:49
      Маскин М.В. [skydos.blogspot.com]
а вот этого не знаю. в этом и проблема ява - каждый раз создавать новые объекты приходится. С тем же БигИнтом или когда необходимо координаты точки отсортировать, приходится так делать: new Pair(x, y) и так раз N(кол-во точек), а если их много, то там и до ТЛЕ недалеко.
  4  Маскин М.В. [skydos.blogspot.com], 16 августа 2010 г. 18:35:59
      SKYDOS
Даже если убрать создание объекта все равно идет автоматический боксинг мне кажется)
  5  SKYDOS [Vladimir SU] [skydos.blogspot.com], 16 августа 2010 г. 16:20:31
      "Integer two = (Integer) sum.poll() + (Integer) sum.poll(); // получение элемента "

как лучше:
int two = sum.poll() + sum.poll();

и всё.
  6  SKYDOS [Vladimir SU] [skydos.blogspot.com], 16 августа 2010 г. 16:19:41
      sum.add(new Integer(nextInt())) - ужас))) каждый раз создавать объект класса Integer...
лучше так: sum.add(nextInt()) и всё.
  7  Мухамадеев Руслан Азатович, 16 августа 2010 г. 15:43:51
      недавно решал задачу здесь, в которой нужно было использовать структуру данных - бинарная куча, использовал PriorityQueue
PriorityQueue heap = new PriorityQueue(); но по времени не прошло (хотя я использую оптимальной вариант ввода / вывода) (( обычно авторы задачи дают такие ограничение, допустим чтобы проходил алгоритм O (n*log(n)) и n порядка 10^5 чтобы не прошел алгоритм с квадратичной асимптотикой, но для Java такое количество добавлений в структуру слишком критично по времени и как результат TLE, может есть способ использования коллекций более оптимально???
я делал так
PriorityQueue sum = new PriorityQueue<Integer>(100010); // объявление
sum.add(new Integer(nextInt())); // добавление элемента
Integer two = (Integer) sum.poll() + (Integer) sum.poll(); // получение элемента




1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru