powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы
25 сообщений из 208, страница 7 из 9
Алгоритмы
    #39168946
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел пару, нерешаемую без склеивания уровней: 64^2^2^2 > 2^3^2^2 , тут недостаточно проверить 2^2^2 < 3^2^2

ЗЫ mayton, загляни в обсуждение задачи, три месяца назад она вообще была нерешаема
автор Беляев Сергей Николаевич, 02 ноября 2015 г. 7:18:37
В связи с тем, что ранее авторское решение и тесты были ошибочными, тесты изменены, все решения отправлены на перепроверку, а сложность задачи повышена с 71 до 95. В результате мы имеем 0 верных решений на текущий момент.
...
Рейтинг: 0 / 0
Алгоритмы
    #39168957
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пускай этот Сергей Николаич нам расскажет как он тестировать это будет.
...
Рейтинг: 0 / 0
Алгоритмы
    #39168963
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот пускай этот Сергей Николаич нам расскажет как он тестировать это будет.
и исходник проверялки пусть покажет, а то вдруг еще чего накосячено
...
Рейтинг: 0 / 0
Алгоритмы
    #39168970
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAleksandr SharahovB 18783990 тот же самый алгоритм сравнения )
ты тут перемудрил
Код: sql
1.
abs(x1-x2)/(abs(x1)+abs(x2)+epsilon)>epsilon


затестил ради интереса - не проходит мой код с такой проверкой.
у меня проще
Код: sql
1.
abs(x1-x2)>epsilon



Да нет, вроде верно все. Просто epsilon он на то epsilon, чтоб его подбирать при настройке алгоритма.
Задача тут отсечь равные с учетом накопившихся ошибок, не затронув при этом почти равные.



Dima TAleksandr SharahovДело в том, что таких башен конечное число, и, похоже, что после склейки верхних уровней
не существует таких башен высотой более 4 (если считать склеенные уровни за 1).
Т.е. главная фишка алгоритма - именно склейка верхних уровней.
c 10 до 4 не склеить даже если там одни двойки. 2^2^2^2 = 65536 а дальше не склеить.

Но т.к. по условию задачи исходные уровни не более 99, т.е. максимум склеиваются три верхних в один, например 2^2^2 = 16
Как следствие функция проверки должна работать без склеивания. А если она не работает, то значит должна существовать такая пара пятиуровневых башень A(a1^a2^a3^a4^a5) и B(b1^b2^b3^b4^b5) удовлетворяющих условию A<B при
a3^a4^a5>b3^b4^b5 или (a3^a4^a5=b3^b4^b5 и a2>b2) или (a3^a4^a5=b3^b4^b5 и a2=b2 и a1>b1)

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

Ты не понял.

У меня речь идет о 4х ВЕРХНИХ уровнях,
причем после того, как самый верхний их них был получен склейкой
(см. мой алгоритм сравнения 18783990 )


P.S.
Задачей этой почти не занимался, только в метро иногда размышляю, да слежу, что тут пишут )
Все на выходные откладываю удовольствие.
По-хорошему, про 5й уровень доказать надо, что там нету наших башенок, а то все решение коту под хвост.
Да и не особо теперь доверяю проверке от авторов задачи )
...
Рейтинг: 0 / 0
Алгоритмы
    #39168978
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonВот пускай этот Сергей Николаич нам расскажет как он тестировать это будет.
и исходник проверялки пусть покажет, а то вдруг еще чего накосячено
Я не думаю что создатели контестеров утруждают себя написанием исходника.
Скорее всего исходник это плод крауд-сорсинга. Или просто отбирается
на конкурсной основе самый компактный (или бысстрый) в своём классе ЯП.
И опять-же его никому не показывают.

Ну.. если-бы я организовывал подобные соревнования то ябы точно не осилил
700 олимпиадных задач решить да еще и без ошибок.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169132
VestaBesta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вирт в этом плане лучший. Все до мельчайших подробностей у него!
...
Рейтинг: 0 / 0
Алгоритмы
    #39169142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что у него? 700 олимпиадных задач?
...
Рейтинг: 0 / 0
Алгоритмы
    #39169200
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovТы не понял.

У меня речь идет о 4х ВЕРХНИХ уровнях,
причем после того, как самый верхний их них был получен склейкой
(см. мой алгоритм сравнения 18783990 )
Не сработает на такой
Код: sql
1.
2.
3.
2
4 2 99 99 99 99
4 3 98 99 99 99


99^99 это 197 десятичных знаков, а в double мантисса всего 15, т.е. хвост теряется из-за погрешностей.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169207
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому надо для отладки - можете взять мой тест с ответом
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
23
9 2 2 2 2 2 2 99 2 9 19
9 99 99 99 99 99 99 98 2 9 19
8 25 34 99 75  2 99 99 92 99 
7 99 99 78 98 99 90 99 99
5 98 99 99 8 2 34
5 99 99 99 2 2 35
5 98 99 99 16 2 33
4 2 2 4 5 4
3 98 99 98 98
4 4 4 4 4 4
3 3 3 3 3
4 2 2 2 2 2
3 64 2 2 2 
3 2 3 2 2
2 4 3 3
3 2 2 2 2
1 3 3
2 2 2 2
1 3 2
1 2 3
0 7
0 5
1 2 2


ответ
Код: sql
1.
23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 


...
Рейтинг: 0 / 0
Алгоритмы
    #39169245
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAleksandr SharahovТы не понял.

У меня речь идет о 4х ВЕРХНИХ уровнях,
причем после того, как самый верхний их них был получен склейкой
(см. мой алгоритм сравнения 18783990 )
Не сработает на такой
Код: sql
1.
2.
3.
2
4 2 99 99 99 99
4 3 98 99 99 99


99^99 это 197 десятичных знаков, а в double мантисса всего 15, т.е. хвост теряется из-за погрешностей.

Да посмотри уж, наконец, мое решение 18783990 )
Все сработает.

Повторяю еще раз, твое решение полностью совпадает с моим.
Разница только в работе с epsilon, которую я не настраивал, т.к. пока не занимался этой задачей плотно.

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

К тому же я, похоже, знаю где искать почти одинаковые башенки.

Вопрос только во времени.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169263
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovDima TНе сработает на такой
Код: sql
1.
2.
3.
2
4 2 99 99 99 99
4 3 98 99 99 99


Да посмотри уж, наконец, мое решение 18783990 )
Все сработает.
Сработает и ладно. Поверю на слово.

Смотрел неоднократно и уже несколько раз писал что китайской грамоте не обучен. Ну не знаю я паскаля с его нездоровым синтаксисом. И ни одного камента у тебя нет. ХЗ что такое High(MaxBaseForPower)
...
Рейтинг: 0 / 0
Алгоритмы
    #39169290
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется понял, на что ты надеешься. Думаешь раз совпало, то досравнится тут:
Код: sql
1.
2.
3.
4.
for i:=len1-1 downto 0 do begin;
    Result:=t1[i]-t2[i];
    if Result<>0 then exit;
    end;


Тот пример пройдет, этот не должен.
Код: sql
1.
2.
3.
4.
3
4 5 2 49 4 5
4 3 2 7 2 11
4 2 2 49 32 2


Правильный ответ 3 2 1
...
Рейтинг: 0 / 0
Алгоритмы
    #39169342
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

да, думаю )

Твой пример показывает, что от схлопывания может быть не только польза, но и вред.
Чтобы все сработало правильно, надо подстроить жадность алгоритма схлопывания.
У меня она задается константой 2470, исходя из которой рассчитаны значения элементов MaxBaseForPower.
Значит, нужно изменить порог схлопывания так, чтобы оно не выполнялось в данном случае - и все сработает.

Я пробую обсуждать алгоритм, а не значения констант )
...
Рейтинг: 0 / 0
Алгоритмы
    #39169380
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Кстати, там же в исходнике строчкой выше объявления массива MaxBaseForPower для константы 2470
закомментирован другой вариант объявления для константы 300.

Если его раскомментировать, то твой пример проходит.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169387
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать зайти с другой стороны.
Если добить все короткие башни справа до 9 членов единицами, то получим всего
99^9 = 913517247483640899 вариантов, что сущий пустяк по сравнению с например с 2^65536!
...
Рейтинг: 0 / 0
Алгоритмы
    #39169412
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВМожно попробовать зайти с другой стороны.
Если добить все короткие башни справа до 9 членов единицами, то получим всего
99^9 = 913517247483640899 вариантов, что сущий пустяк по сравнению с например с 2^65536!
правильно 98^9 т.к. нули не используются.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169480
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tправильно 98^9 т.к. нули не используются.
833747762130149888 - еще лучше :)
Можно ввести последовательность
1 1 1 1 1 1 1 1 1 ->1
1 1 1 1 1 1 1 1 2 ->2
......................
1 1 1 1 1 3 1 1 3 ->2910900
......................
99 99 99 99 99 99 99 99 99 -> 833747762130149888
которая задается формулой
k 9 *99^9+...k 1
где k i 0..9
...
Рейтинг: 0 / 0
Алгоритмы
    #39169494
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВDima Tправильно 98^9 т.к. нули не используются.
833747762130149888 - еще лучше :)
Можно ввести последовательность
1 1 1 1 1 1 1 1 1 ->1
1 1 1 1 1 1 1 1 2 ->2
......................
1 1 1 1 1 3 1 1 3 ->2910900
......................
99 99 99 99 99 99 99 99 99 -> 833747762130149888
которая задается формулой
k 9 *99^9+...k 1
где k i 0..9
И чем она будет отличаться от того как мы это сейчас пишем? Единичкой вместо пробела и записью слева направо?
...
Рейтинг: 0 / 0
Алгоритмы
    #39169560
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИ чем она будет отличаться от того как мы это сейчас пишем? Единичкой вместо пробела и записью слева направо?
Пусть то было множество M1.
Вычислим все возможные пирамиды и отсортируем, получим множество M2, точно такой же мощности как и первое.
Теперь осталось найти функцию, которая по каждому номеру элемента из M1 сопоставляет номер элемента из M2.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169573
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, для начала прикинь сколько времени это будет считаться. Потом сколько места надо будет для хранения результата, потом обсудим "отсортируем"
...
Рейтинг: 0 / 0
Алгоритмы
    #39169579
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕвгенийВ, для начала прикинь сколько времени это будет считаться. Потом сколько места надо будет для хранения результата, потом обсудим "отсортируем"
Если найти нужную функцию, то всего этого не потребуется :)
...
Рейтинг: 0 / 0
Алгоритмы
    #39169586
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если выполнить первый пункт "Вычислим все возможные пирамиды", т.е. найти способ вычисления, то функция не потребуется.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169909
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovDima T,

да, думаю )

Твой пример показывает, что от схлопывания может быть не только польза, но и вред.
Чтобы все сработало правильно, надо подстроить жадность алгоритма схлопывания.
У меня она задается константой 2470, исходя из которой рассчитаны значения элементов MaxBaseForPower.
Значит, нужно изменить порог схлопывания так, чтобы оно не выполнялось в данном случае - и все сработает.

Я пробую обсуждать алгоритм, а не значения констант )
Я так и не понял это ноу-хау с MaxBaseForPower. Понимаю что это какой-то результат твоих многоуровневых размышлений, но я не телепат. Будь проще - заработаешь больше.

Если честно - уже устал придумывать тесты (хотя в связи с этим появилось кое-какое понимание как делать тесты) и запости свое "итого" на проверку.
...
Рейтинг: 0 / 0
Алгоритмы
    #39169935
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЯ так и не понял это ноу-хау с MaxBaseForPower.


Да там примитивно все.
Пусть два самых уровня башни представляют собой башенку a^b.
Тогда мы заменяем их одним эквивалентным уровнем ("склеиваем"),
если в результате склеивания будет получено значение не больше
некоторой константы (например, 300), в противном случае не склеиваем.
Такое шаманство позволяет "улучшить" плохие башни с маленьким числом сверху.
Это улучшение позволяет сосредоточить основные вычисления на верхних 4х уровнях.
Как мы видели выше, слишком увеличивать эту константу опасно,
т.к. ошибки вычислений приводят к невозможности различить разные башни.

В общем, как раз этим мне и не нравится это решение.
Какие-то полуинтуитивные действия приводят к успеху.
Хочется не то чтобы строгого доказательства,
но хотя бы четкого обоснования, почему все работает.
Почти уверен, что если в условии 99 поменять на 255, алгоритм не сработает.

Ну, и хотелось бы иметь возможность проверить работу алгоритма автора задачи )
...
Рейтинг: 0 / 0
Алгоритмы
    #39169938
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, пропущено слово ВЫСОКИХ:

Пусть два самых ВЫСОКИХ уровня башни представляют собой башенку a^b...
...
Рейтинг: 0 / 0
25 сообщений из 208, страница 7 из 9
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]