|
|
|
|
|
|
|
Вернуться
| 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(); // получение элемента
|
|
|
Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!
| | | |