|   |   | 
| 
 | OFF: Пятницы, школа, тырим плюшки, едим булочки | ☑ | ||
|---|---|---|---|---|
| 0
    
        Харлампий Дымба 29.09.23✎ 13:01 | 
        1. Вася написал программу-шифратор: каждая буква в тексте при нажатии F2 заменяется на другую. Разные буквы заменяются на разные, только нижний регистр, русский алфавит, пробелы и знаки препинания не изменяются.
 Вася написал "съешь ещё этих мягких французских булочек, да выпей чаю" и нажал F2. Пришел Петя и продолжил нажимать F2 - 3999 раз, но так и не увидел больше исходную фразу. Сколько раз ещё придётся нажать? 2. Хильдур Бок готовится стать фру Янссон и на радостях напекла гору плюшек - вся кухня заставлена блюдами с ними - и отвлеклась на разговор по телефону с Фридой. В меру упитанный мужчина залетает в комнату через окно и тырит плюшки - собирая за один прилёт с выбранных блюд равное количество плюшек. Как действовать, чтобы минимизировать количество залётов? | |||
| 44
    
        Irbis 29.09.23✎ 14:58 | 
        (39) Ничего неопределённого. Про медианную зряплату слышал, вот по тому же самому принципу? Ищется число, справа и слева от которого будет одинаковое количество блюд с плюшками. Дальше для чёта за медиану можно бать ближайшее меньшее, при нечетном количестве блюд саму медиану.     | |||
| 45
    
        Харлампий Дымба 29.09.23✎ 14:58 | 
        (42) 4,5,6,7,11 тоже подходит     | |||
| 46
    
        НафНаф 29.09.23✎ 15:02 | 
        (42) я взял f(33)=5460, она же f(32)
 4*3*5*7*13=5460, причем 4+3+5+7+13 = 32 | |||
| 47
    
        НафНаф 29.09.23✎ 15:03 | 
        (43) ну я тоже поиски начал не с функции Ландау (тоже про нее не знал)     | |||
| 48
    
        НафНаф 29.09.23✎ 15:05 | 
        (43) разные в разные, это не значит, что p(a)<>a
 это значит, что для a<>b => p(a)<>p(b) | |||
| 49
    
        Харлампий Дымба 29.09.23✎ 15:11 | 
        (46) ага, значит всё-таки неожиданно для себя я всё-таки сделал ловушку в задачке. Чтобы 4*3*5*7*13 работало, у тебя должно быть 1+3+4+5+7+13=33, то есть одна буква должна заменяться на себя. Но "каждая буква в тексте заменяется на другую".     | |||
| 50
    
        maxab72 29.09.23✎ 15:14 | 
        С плюшками понятно, все количества плюшек представляем в виде двоичных чисел, и потом забираем разрядами, где они есть. Пример, есть пять тарелок: плюшек 1 2 3 4 5, значит 
 числа: 100 010 110 001 101 Потребуется три захода: каждым заходом снимаем числа в одном разряде: 1 заход, снимаем 1 в 1 разряде 000 010 010 001 001 Второй заход - снимем во втором разряде 000 000 000 001 001 третий - в третьем разряде 000 000 000 000 По первой задаче так и не понял алгоритм шифрования. | |||
| 51
    
        Харлампий Дымба 29.09.23✎ 15:16 | 
        Задача 1  решена (22)
 Выложу тогда кому будет интересно своё решение: Смены букв - замкнутые цепочки, ищем НОКи разложений числа 33 на слагаемые. Три максимальных получаются для наборов букв НОК(3,3,4,5,7,11)=4620; НОК(4,5,6,7,11)=4620; НОК(1,5,8,9,11)=3960. 3960 нажатий не хватило, а значит надо ещё 620. Примечания: 1.Слагаемые должны быть больше 1 (условие "разные" в "разные" не позволяет букве переходить в себя) 2.Буквы "ж" хоть и нет во фразе, но она в любом случае появляется на экране, если бы в исходной фразе не было 2 или более букв, то надо было бы рассматривать также варианты для 31,30 и т.д букв. 3.функция Ландау. 4.Теоретически могло быть несколько ответов, так что надо смотреть срез максимальных НОК. | |||
| 52
    
        Гена гуру 29.09.23✎ 15:33 | 
        Вроде как плюшки от обратного надо считать. 
 1. Ясно, что в последний прилёт как ни крути, но надо будет забрать только по 1-ой (последней) со всех оставшихся блюд. 2. В предпоследний - по 2-ве. Потому что если по три, то двойка останется. 3. В предпред-последний - по 4-ре. ... Итак. Берётся максимум и забирается 2n < Max < 2n+1 | |||
| 53
    
        Харлампий Дымба 29.09.23✎ 15:30 | 
        (52) Да, действительно, если количество плюшек числа подряд - то представляем их в двоичной системе, где число полетов - число разрядов в наибольшем числе, а дальше летаем собирая степени двойки с тарелок, где есть единичка в соответствующем полёту разряде.
 Но что делать, если есть дырки? Ну вот 1,3,4 - за 2 полёта, а не за 3 можно сделать (41) А зачем повторять слагаемые? Если ты берёшь n и n, так лучше возьми n и 2*n. Все-равно всё-что между n и 2n ты собрать не сможешь за одни раз. А вот всё что выше 2n ты во втором случае соптимизируешь. Как пример: 3,6,9 - за 2 пролёта. | |||
| 54
    
        RomanYS 29.09.23✎ 15:35 | 
        (46) 32 брать нельзя, так как одна оставшаяся буква будет превращаться сама в себя, а это противоречит условию.     | |||
| 55
    
        Гена гуру 29.09.23✎ 15:35 | 
        (53) Но что делать, если есть дырки?
 Ну мы же рассмотрели наихудший вариант. А так - случайно может быть и изначально на всех блюдах одинаковое количество плюшек, и мы за раз их все и возьмём ) | |||
| 56
    
        RomanYS 29.09.23✎ 15:36 | 
        (51) НОК(1,5,8,9,11) вот это тоже нельзя, минимальная цепочка - 2 буквы     | |||
| 57
    
        RomanYS 29.09.23✎ 15:40 | 
        (53) А зачем повторять слагаемые?
 ответить не готов, но это не запрещено. Да возможно замена на 2n всегда возможна, т.е. без повторов можно решить как мимимум за то же количество залетов | |||
| 58
    
        Харлампий Дымба 29.09.23✎ 15:41 | 
        (52) Да, это понятно. Оценка сверху ОКРВВЕРХ(lg<SUB>2</SUB>n). А если подряд, то это правильный алгоритм. А вот 1,3,4? В твоём алгоритме, ты заберёшь 4 и будешь летать ещё 2 раза. А мог бы взять 3 с двух старших тарелок и вернутся ещё лишь раз.
 Или вот 1,4,6,10: заберёшь 1 со старших блюд - будешь летать 4 раза заберёшь 4 со старших блюд - будешь летать 4 раза | |||
| 59
    
        НафНаф 29.09.23✎ 15:42 | 
        (54) "дна оставшаяся буква будет превращаться сама в себя, а это противоречит условию" - какому условию?     | |||
| 60
    
        Харлампий Дымба 29.09.23✎ 15:45 | 
        (56) опечатка - НОК(5,8,9,11) само собой.     | |||
| 61
    
        НафНаф 29.09.23✎ 15:48 | 
        хотя ладно, раз заменяется на другую, то да, функция Ландау вообще не подойдет     | |||
| 62
    
        Гена гуру 29.09.23✎ 15:50 | 
        (58) Похоже, что если нет какой-то 2к из начальных, то пролёты можно и уменьшить.     | |||
| 63
    
        RomanYS 29.09.23✎ 15:50 | 
        (59) " заменяется на другую"     | |||
| 64
    
        RomanYS 29.09.23✎ 15:51 | 
        (61) с некоторыми ограничениями подойдёт     | |||
| 65
    
        RomanYS 29.09.23✎ 15:53 | 
        (58) минимальный набор 1, 4, 5. Порядок естественно не важен     | |||
| 66
    
        uno-group 29.09.23✎ 15:56 | 
        (21) на следующую и другую это разные формулировки. 33^33 и то не факт     | |||
| 67
    
        Харлампий Дымба 29.09.23✎ 16:02 | 
        (66) условие "разные" в "разные" не позволяет получить разомкнутую цепочку букв. Они будут крутиться по кругу в рамках своей цепочки.     | |||
| 68
    
        maxab72 29.09.23✎ 16:03 | 
        2(53) значит берем минимум из количества не пустых тарелок и количества не пустых разрядов, в представлении количества плюшек в двоичном виде.     | |||
| 69
    
        Харлампий Дымба 29.09.23✎ 16:07 | 
        (68)ага, тоже про это думал. Контрпримеры придумывать задачка тоже интересная. Но опять самое простое: 1,3,4 - 0001,0111,1000. 3 непустые тарелки, 4 непустых разряда и всего лишь 2 полёта.     | |||
| 70
    
        uno-group 29.09.23✎ 16:07 | 
        (67) Тут не все буквы алфавита нет буквы "Ж" потому цепочка разорвана и буквы могут крутиться как угодно.
 Парадигма со всеми буквами звучит так. "съешь же ещё этих мягких французских булочек, да выпей чаю" Вот для нее ваша формула верна. | |||
| 71
    
        Харлампий Дымба 29.09.23✎ 16:08 | 
        к(69) Туплю: 001,011,100 - но суть та же.     | |||
| 72
    
        Харлампий Дымба 29.09.23✎ 16:13 | 
        (70) ну это такая небольшая была уловка. Буква ж всё-равно имеет свою цепочку, она не может быть сама по себе. Так что  убрав её я все-равно оставил необходимость составлять цепочки из всех 33 букв.     | |||
| 73
    
        uno-group 29.09.23✎ 16:26 | 
        Что мешает менять букву А на Ж и назад А на последнем круге поменять на любую оставшуюся чтобы фраза не совпала все условия выполнены.     | |||
| 74
    
        RomanYS 29.09.23✎ 16:29 | 
        (66) именно другую, по факту все буквы разбиты на зацикленные цепочки. Сообщение вернется назад, когда все циклы совпадут, т.е. в НОК от всех длин циклов.
 МАксимальное значение этого НОКа (и единственное больше 4000) 4620 = 4*3*5*7*11 Циклов длиной 3 будет 2 штуки, т.е. все буквы будут разбиты на группы- циклы длинами 3+3+4+5+7+11=33 | |||
| 75
    
        RomanYS 29.09.23✎ 16:30 | 
        (73) так замены на всех шагах одинаковые     | |||
| 76
    
        uno-group 29.09.23✎ 16:33 | 
        (74) кто сказал что цепочки зациклены и крутятся в 1 сторону? отсутствие 1 буквы их разрывает. Другая не обязательно следующая А-Б-С-Б-С и так по кругу буква другая и все разные     | |||
| 77
    
        RomanYS 29.09.23✎ 16:41 | 
        (76) все переходы фиксированы, они не могут не зациклиться.
 А-Б-С-Б-С такого быть не может, А и С не могут превращаться в одну букву Б | |||
| 78
    
        Харлампий Дымба 29.09.23✎ 16:43 | 
        (76) Разные буквы заменяются на разные: это значит что А-Б и С-Б не могут сосуществовать. Иначе разные буквы А и С заменились на одну и ту же - Б     | |||
| 79
    
        uno-group 29.09.23✎ 16:53 | 
        (77) за счет лишней буквы А и С превратятся в разные буквы в том то и дело если бы букв было бы 33 то несмогли а когда появляеться лишняя они могут превращаться как угодно. Опять же что в условии мешает буквам крутиться между 2 и 3 превращением     | |||
| 80
    
        RomanYS 29.09.23✎ 16:57 | 
        (79) шифрование подразумевает возможность дешифровки. Как в твоем случае расшифровать строку ББББ?     | |||
| 81
    
        Харлампий Дымба 29.09.23✎ 16:59 | 
        (76) Но идея с "туда-сюда" очень хороша) 
 Проблема только в том, что любое колесико, которое будет крутиться туда-сюда должно быть только из 2 букв (или из 3 с "ж", но чтобы она не показывалась). А колесико из двух букв, которое крутится в одну сторону ни чем на экране не будет отличаться от того, которое крутится туда-сюда: смена букв будет такая же. Если же колесико прокрутится больше 1 буквы в одну сторону, то назад уже дороги нет: Петя увидел А-Б-С, тогда С-Б назад уже нельзя сделать, ведь уже было А-Б. | |||
| 82
    
        RomanYS 29.09.23✎ 17:00 | 
        (79) Опять же что в условии мешает буквам крутиться между 2 и 3 превращением 
 Ничто не мешает, но тогда каждые 6 нажатий будешь получать исходную строку, а по условию 4000 раз повторов не было | |||
| 83
    
        Irbis 29.09.23✎ 17:16 | 
        (71) Про вариант из (44) что скажешь?     | |||
| 84
    
        Харлампий Дымба 29.09.23✎ 17:33 | 
        (84) Я ведь честно написал, что у меня нет решения.
 Ты можешь попробовать развить свой алгоритм. Наверное, в мысли про медиану, что то есть, но мне не понятно как это поможет правильно бить тарелки. Вот смотри: 1,2,3,98,100. Ты берёшь третье блюдо, а дальше что? Просто теряешь пролет, и дальше надо ещё 3 раза прилетать: 3: 1,2,0,х?,у? А надо брать 2: 1,0,1,98,98 | |||
| 85
    
        Bigbro 29.09.23✎ 17:38 | 
        нужны разложения в суммы.     | |||
| 86
    
        Irbis 29.09.23✎ 17:38 | 
        1 2 3 98 100
 1 2 95 97 1 93 95 1 2 2 Как то так получается | |||
| 87
    
        Гена гуру 29.09.23✎ 17:43 | 
        (86) не надо четвёртое блюдо трогать в первой попытке по 2 булочки, тогда попыток будет всего три.     | |||
| 88
    
        Irbis 29.09.23✎ 17:47 | 
        (87) Тогда если откуда то брать, а откуда то можно и не брать всё сильно сложнее.     | |||
| 89
    
        Гена гуру 29.09.23✎ 17:45 | 
        (88) Да. Сомневаюсь, что есть общий алгоритм.     | |||
| 90
    
        Харлампий Дымба 29.09.23✎ 17:53 | 
        (85) Нужны. Только их для каждой тарелки вагон. И комбинаций вагон. Так ещё и выбрать оптимум. А ещё учесть, что одна из тарелок может быть  слагаемым. А ещё после каждого пролета стопки меняются и можно заново раскладывать. 
 А если там 1,100: программа сколько будет 100 раскладывать на слагаемые? Ну или 1,3,7,15,31,63. Человеку сразу видно что Карлсону придётся помотаться, а вот машине сколько времени понадобится комбинации слагаемых обсчитать? Ну так-то да, понятно что если мы стопки раскладываем на комбинации слагаемых, то нам скорее всего придётся разложения в суммы делать. Как это сделать оптимально... (86) Карлсон может не брать с некоторых тарелок плюшки, чтобы оптимизировать стопки под следующие прилёты. Тогда 1)2: 1,0,1,98,98 2)98:1,0,1,0,0 3)1: 0,0,0,0,0 Пробуем надо найти именно лучший вариант. | |||
| 91
    
        Bigbro 29.09.23✎ 17:55 | 
        кстати написано что с выбранных. то есть не со всех с каких можно ...
 значит можно и не брать. | |||
| 92
    
        Харлампий Дымба 29.09.23✎ 18:01 | 
        (89) А я надеялся, что всё уже придумано до нас, и кто-нибудь вспомнит, как это делается...
 Но выпечка это, конечно, математически сложная штука: блинная сортировка тоже ищет свой оптимум) | |||
| 93
    
        Timon1405 29.09.23✎ 18:47 | 
        (90) думаю что надо идти по степеням двойки: сначала нечетные тарелки, потом кратные 2, потом 4 итд
 1 2 3 10 15 98 100 0 2 2 10 14 98 100 0 0 0 8 12 96 100 0 0 0 8 8 96 96 0 0 0 0 0 96 96 0 0 0 0 0 0 0 то есть оценка за [log2(maxN)]+1 точно сможем все собрать. осталось построить контрпример что за [log2(maxN)] нельзя. вертится 1,3,7,15,31,63, но тут я что-то недокрутил | |||
| 94
    
        RomanYS 29.09.23✎ 18:12 | 
        (89) если алгоритм есть, то он общий)) Просто он вероятно не простой, в худшем случае это перебор     | |||
| 95
    
        RomanYS 29.09.23✎ 18:13 | 
        (93) забудьте про степени двойки, они красиво закрывают один частный случай - подряд идущие числа     | |||
| 96
    
        RomanYS 29.09.23✎ 18:16 | 
        (93) нижняя оценка элементарно доказывается: если у Вас N залет, то в каждый залет вы можете взять или не взять с тарелки итого 2^N-1 вариантов. Если у вас больше исходных сумм - то закрыть их не получится     | |||
| 97
    
        Timon1405 29.09.23✎ 18:16 | 
        (93) наверное, можно по индукции: пусть мы нашли минимальное K для maxN, тогда для числа maxN*2+1 точно понадобится дополнительный K+1й пролёт     | |||
| 98
    
        Timon1405 29.09.23✎ 18:22 | 
        (95) в моем примере не все числа подряд. взяв в первом проходе 1 из нечетных чисел, мы получаем точно четные числа везде и по сути сводим задачу к прошлой только с коэффициентом 2. Ваша нижняя оценка из (96) закрывает решение     | |||
| 99
    
        Харлампий Дымба 29.09.23✎ 18:32 | 
        (98)1,3,5,8.
 Взяв в первом проходе 1 из нечетных чисел мы получим 0,2,4,8 и ещё 3 пролёта. А оптимально будет: 1,0,5,5 1,0,0,0 0,0,0,0 | |||
| 100
    
        RomanYS 29.09.23✎ 18:35 | 
        (98) я уверен, что всегда можно найти решение по нижней оценке. Но как его найти безе переборов, пока не понимаю. Поэтому про "закрывает решение" пока не согласен     | |||
| 101
    
        Timon1405 29.09.23✎ 18:44 | 
        (99) давайте определимся: нужно дать алгоритм поиска конкретного минимального пути до 0,0,0,0 по заданному набору или дать алгоритм который за конечное число шагов(зависящее от maxN) приведет к 0,0,0,0 для любого набора из maxN плюшек?     | |||
| 102
    
        RomanYS 29.09.23✎ 18:47 | 
        (101) для любого неинтересно - это эквивалентно полному набору. Интересен поиск для заданного набора     | |||
| 103
    
        Харлампий Дымба 29.09.23✎ 18:51 | 
        (93) А что такое maxN? Если количество тарелок, то всегда можно разложить так, что не соберешь меньше чем за maxN - я уже приводил: 1,3,7,15
 Если maxN максимальное количество блинов, так 1,100 собирается за 2 пролёта без логарифмов. (100) Я был бы рад и алгоритму с перебором, уже аж 2 мысли: слагаемые не повторяются (не смог придумать пример где это понадобилось бы); одинаковые столбики можно рассматривать как один) | |||
| 104
    
        Bigbro 29.09.23✎ 19:42 | 
        раскладываем каждую тарелку на сумму различающихся слагаемых
 таким образом чтобы общее количество этих слагаемых со всех тарелок было минимальным. повторы выкидываются/сворачиваются. так мы получаем целевое значение функции которую надо оптимизировать. | |||
| 105
    
        ДедМорроз 29.09.23✎ 20:05 | 
        Насколько я понимаю,разные на разные - это для каждого преобразования.
 Мы берём выстраиваем буквы сообщения в алфавитном порядке,потом случайным образом их перемешиваем,исключая только совпадения. Так как расстановка случайная,то существует только ненулевая вероятность,что мы получим исходную фразу. Почему должно быть конечное число итераций ? | |||
| 106
    
        RomanYS 29.09.23✎ 20:12 | 
        (100) решение по нижней оценке отменяется - в (103) простой контрпример     | |||
| 107
    
        RomanYS 29.09.23✎ 20:14 | 
        (105) все буквы соберутся в один или несколько циклов. Если циклов несколько, то после НОКа нажатий все совпадут одновременно     | |||
| 108
    
        RomanYS 29.09.23✎ 20:19 | 
        (103) если не говорить про эффективность, то с перебором всё просто. Взяли все значения и все возможные разницы. Из этого набора перебираем выборки размерностью log2(N), если не нашли подходящей - перебираем выборки на 1 длиннее и т.д. до длины N (тут уже перебирать не надо)     | |||
| 109
    
        Timon1405 29.09.23✎ 20:44 | 
        жадный алгоритм: расположить числа пирамидкой как дольки шоколада и каждый раз откусывать прямоугольник наибольшей площади. пример 
 1 3 5 8 минус 10=5*2 0 1 3 3 минус 6=3*2 0 1 1 1 но жадный может ошибаться( | |||
| 110
    
        Харлампий Дымба 29.09.23✎ 21:47 | 
        (108) Разбиений каждой стопки из n блинчиков ~ exp(sqr(n)), и в степени количества блюд..
 Думал можно проще сделать: берем наименьшую стопку и смотрим все возможные комбинации с других тарелок, потом выбираем наименьшую из оставшихся и делаем то же самое. Ну чистый Тетрис... Но понял, что не так - в промежуточных случаях столбики могут каждый раз до 1 блинчика уменьшаться и там число рассматриваемых случаев тоже будет ого-го | |||
| 111
    
        ДедМорроз 29.09.23✎ 22:32 | 
        (107) все, я понял.
 Преобразование задано один раз и по нему выполняется какой-то набор последовательных преобразований. Мне просто показалось,что на каждом шаге новая функция преобразования. | |||
| 112
    
        Bigbro 30.09.23✎ 07:06 | 
        wiki:Разбиение_числа
 немножко теории в плюшки закинем. мы работаем с разбиениями, к счастью мы не первые на этом пути и великие уже успели сделать огромную работу ) | |||
| 113
    
        Bigbro 30.09.23✎ 07:19 | 
        https://neerc.ifmo.ru/wiki/index.php?title=Числа_Стирлинга_второго_рода
 а вот еще числа стирлинга, которые видимо тоже имеют отношение к нашей задаче - количество способов разбиения множества блинчиков на тарелках на условно непустые кучки. это тоже рядом и тоже не то что надо) | |||
| 114
    
        maxab72 30.09.23✎ 08:19 | 
        2(113) Нам надо найти минимум числа слагаемых, из которых можно составить все числа набора. Где-то что-то подобное встречал, но вспомнить не могу. Там точно были не степени двойки, они не дают оптимального ответа. ЕМНИП сумма всех этих слагаемых, должна была быть равна максимальному числу из набора.     | |||
| 115
    
        RomanYS 30.09.23✎ 09:37 | 
        (114) "должна была быть равна"
 вероятно не очень точная формулировка. Точнее будет существует такое решение, для которого выполняется это условие. Например для набора 1, 2, 4 три подходящих ответа: [1, 1, 2], [1, 2, 2], [1, 2, 4] | |||
| 116
    
        maxab72 30.09.23✎ 09:44 | 
        (115) Еще ответы [1, 2, 3], [1, 1, 3], [1, 1, 4]     | |||
| 117
    
        RomanYS 30.09.23✎ 09:58 | 
        (116) Точно! 
 (53) кстати этот пример показывает зачем могут быть нужны одинаковые слагаемые: если нужно оптимизировать ещё и сумму набора, то без учета одинаковых не обойтись. И да - всегда существуют решения с разными, в данном случае их даже два [1, 2, 4], [1, 2, 3] | |||
| 118
    
        Харлампий Дымба 30.09.23✎ 12:12 | 
        (114) Нет. Ну т.е. решение с суммой слагаемых в n конечно есть всегда - брать всегда по одеому блину со всех непустых тарелок- но сумма слагаемых оптимума не всегда равна n.
 Пример: 1,3,5,8 | |||
| 119
    
        RomanYS 30.09.23✎ 12:31 | 
        (118) 1+2+5     | |||
| 120
    
        Харлампий Дымба 30.09.23✎ 13:05 | 
        (119) Согласен. Но надо убедиться. Потому что из этого следует, что одно из разбиений максимума будет оптимумом     | |||
| 121
    
        Харлампий Дымба 30.09.23✎ 14:35 | 
        Проблема оптимума по количеству слагаемых в том, что он допускает одинаковые слагаемые. И тогда нам надо рассматривать разбиения на кванты (единицы или ещё какую мелочь, надо подумать ещё). А таких разбиений для числа очень много. Например 2,4,8 нельзя(?) оптимально разложить так, чтобы сумма слагаемых был 8 и не было повторов: только 2+2+4.
 Но интересно, что всегда существует оптимум, в котором слагаемые не повторятся (строгое разбиение). Правда тогда это разбиение не максимального числа плюшек, а суммы всех плюшек (лишние блюдца с одинаковым количество плюшек мы по договорённости сразу уберём со стола). Попробую показать, поправьте если ошибаюсь: Для наглядности можно представить наше будущее решение в виде таблицы значений - строки-ходы и колонки -блюдца . Итог по колонке - количество плюшек на блюдце. В ячейке каждой строки - либо ноль, либо количество плюшек этого хода. Оптимум - поиск таблицы с наименьшим количество строк. 1. Утверждение: порядок ходов не важен - следующий ход не зависит от предыдущего. В том смысле , что если мы нашли оптимум, то все перестановки ходов в этом оптимуме - тоже будут оптимумом (знаменитое «от перемены мест слагаемых...»). 2. Тогда мы можем отсортировать наши ходы по количеству плюшек, забираемых с каждого блюда - k. Пусть есть две строки с одинаковым количеством плюшек, тогда рассмотрим последовательно все колонки. Если в колонке 0,k или k,0 (то есть на одном ходе с этого блюдца берем k плюшек, а на другом не берём), то мы просто переставим ход для этого блюдца на k,0 (то есть забираем сразу). Если в колонке 0,0 - она нам тут неинтересна, на эти 2 хода не влияет. Если после перестановок (0,k)->(k,0) в в двух строках не осталось колонок (k,k )- то мы можем удалить второю строку (оптимум всё ближе). Если есть - то разложим в 0,2k (то есть на первом ходу это блюдце пропускаем, а на втором - берём двойное количество). После этого преобразования количество строк не изменилось, сумма по колонке не изменилась, принцип - «одна строка - одно количество плюшек» тоже сохранен 3. Ну и повторяем п.2 Ведь после нашего преобразования возможно у нас стало 2 строки с ходом 2k - их также объединяем в одну если можно, или преобразуем в две строки с ходом 2k и 4k В худшем случаем мы просто не изменим количество колонок, т.е для 2,4,8 разложение 2+2+4 мы превратим в в 2+4+8. В лучшем - избавимся от нескольких строк. | |||
| 122
    
        Bigbro 30.09.23✎ 14:46 | 
        допустим у нас есть отсортированное по количеству плюшек множество блюд.
 забрать максимум - плохая стратегия потому что в плохом раскладе будем забирать только по 1. обнулится только одна старшая тарелка. если забрать предыдущее по количеству плюшек количество - то у нас не только обнулится одна тарелка, но есть шанс что остаток на большой тарелке совпадет с одной из меньших. и мы сможем обнулить больше чем 1 на след шаге. но зачем брать именно предыдущую? надо забирать такую которая не только обнулит максимум - например несколько тарелок по 3 плюшки - но и максимизирует количество совпадений у уменьшившихся больших номеров с теми что меньше... то есть если мы забираем 3, то у старшей 5ки останется 2, и у нас как раз есть блюдо на котором 2... надо думать дальше в эту сторону | |||
| 123
    
        Bigbro 30.09.23✎ 14:48 | 
        и да, есть ощущение что ходов не обнуляющих ни одну тарелку быть не должно.
 может оно и неверное но тогда нужен пример. | |||
| 124
    
        Харлампий Дымба 30.09.23✎ 15:53 | 
        (119) А вот такое посмотри, пожалуйста: 11,100,101,103,107 вместо 1+3+7+100 есть с суммой 107 за 4? 
 (124) Проблема в том, что для разных оптимумов могут быть свои ограничения и выводы, действующие для одного и недействующие для другого. Про обнуление надо покрутить, да. | |||
| 125
    
        Харлампий Дымба 30.09.23✎ 17:01 | 
        Из максимального вычитаем минимальное и обносим все блюдца с которых это можно взять. Повторяем.     | |||
| 126
    
        Харлампий Дымба 30.09.23✎ 17:08 | 
        к(125) поторопился обрадоваться( 
 к(124) 11,100,101,103,107 можно разложить в сумму: 96: 11,4,5,7,11 7: 4,4,5,0,4 4: 0,0,1,0,0 1: 0,0,0,0,0 | |||
| 127
    
        RomanYS 30.09.23✎ 17:32 | 
        (123) как выше заметили от порядка шагов результат не меняется. Поэтому при определённом порядке шагов обнуления может не быть на каждом шаге. С другой стороны будет порядок при котором будет выполняться это условие     | |||
| 128
    
        Харлампий Дымба 30.09.23✎ 18:09 | 
        в (126) как раз иллюстрация (11,100,101,103,107) - если подбираем оптимум из разбиения максимума (107), то у нас 1+4+7+96 и ни одно из этих слагаемых не даёт пустую тарелку своим ходом, другого разбиения в 107 не будет(?). 
 Но если другого разбиения нет, то тогда в таких оптимумах выбор минимального обноса (1 шт) не равен минимальному количеству плюшек на тарелке (11 шт). А с учетом возможности равенства слагаемых... Но возможно для каждой раскладки всегда существует оптимум, при котором обнуление на каждом ходе. | |||
| 129
    
        Bigbro 01.10.23✎ 07:41 | 
        окей, обнуление либо уравнивание. потому что уравнивание это обнуление доп тарелки на следующий ход.
 требование обнуления слишком сильное. контрпример нужен что уравнивание - не всегда лучшая стратегия. пока я бы пошел с самого большого блюда вниз проверил предыдущее - если мы его снимем - станет ли равен остаток на большом одному из мелких. если да забираем (таким образом мы зануляем сразу одно блюдо и делаем равенство - чтобы на след ход занулить сразу 2), если нет переходим к третьему проверяем аналогично - обнулится ли вместе с ним кто то еще и станет ли один из остатков от больших равен одному из малых. и так далее. проверим? | |||
| 130
    
        Bigbro 01.10.23✎ 07:42 | 
        выглядит как добротная стратегия, наверняка не оптимальная но уже вполне рабочая.     | |||
| 131
    
        Bigbro 01.10.23✎ 07:44 | 
        хотя вот в этом же примере 11 100 101 103 107
 мы не найдем ничего и надо будет придумывать другой ход на этот случай. ))) | |||
| 132
    
        Bigbro 01.10.23✎ 07:53 | 
        тут опять же варианты перебирать от минимальной тарелки вниз с поиском тарелок которые можно уравнять.
 или вверх с единицы. по идее лучше вниз. тогда мы как раз находим 7, чтобы 100 107 уравнять находим 6 чтобы уравнять 107 101 (но 6 не используется, потому что 7 уже портит эту пару) 4 - для 107 103 11 (откуда вычли 7) 3 - 100 103 2 и 1 | |||
| 133
    
        Харлампий Дымба 01.10.23✎ 12:27 | 
        (129) Стратегия же должна покрывать случай когда стопки - числа подряд. Ну там 1,2,3,4,5,6,7,8.. 
 Пока из общего обсуждения и мыслей в (24) и (109) мне видится такая: Находим стопку, равную или ближайшую сверху к полуразности между максимальной и минимальной стопкой, и обносим всё ей. Повторяем. | |||
| 134
    
        ДедМорроз 01.10.23✎ 13:17 | 
        Когда числа подряд и с единицы,то степени двойки дают оптимальный вариант.     | |||
| 135
    
        uno-group 02.10.23✎ 08:59 | 
        (82) В условии нет что повторов не было. может было 3 движения вперед и дальше крутиться 3-2 и так до бесконечности. Шифрование как бы подразумевает, что зашифрованнная фраза не должна повторять то что шифруется. Правильная задача под ваше решение должна содержать букву "Ж" и спрашивать когда Петя увидит повторяющуюся комбинацию.     | |||
| 136
    
        RomanYS 02.10.23✎ 09:25 | 
        (135) мы наверное про разные задачи.
 В нашей повторов не было : "...и продолжил нажимать F2 - 3999 раз, но так и не увидел больше исходную фразу." "Шифрование как бы подразумевает, что зашифрованнная фраза не должна повторять то что шифруется." - это верно только для однократного шифрования | |||
| 137
    
        Харлампий Дымба 02.10.23✎ 14:37 | 
        (135) Вроде в (81) расписал, что как бы ты не расставлял буквы по цепочкам - 4000 раз не повторить фразу ты сможешь только для определенных длин цепочек: (3,3,4,5,7,11) и (4,5,6,7,11), все остальные либо дают повтор раньше 4000, либо содержат цепочку из одной буквы, что не подходит по условию. Цепочки определены заранее - они не меняются после каждого шифрования. Можно придраться, что это строго не написано, но ведь если это не так, то и задачи как бы нет)
 (136) Слушай, ваша с uno-group дискуссия натолкнула на одну прелестную вещь: если бы Вася вместо фразы про булки написал "МИСТА" ответ в задаче был бы тем же - 620. Ну и чтоб 2 раза не писать: в (133) - "полуразность" читать как "полусумма" | |||
| 138
    
        Харлампий Дымба 02.10.23✎ 14:42 | 
        Ну второй вариант задачи посложнее: если бы Вася написал "ВАСЯ", то сколько раз жать кнопку Пете в худшем случае?     | |||
| 139
    
        RomanYS 02.10.23✎ 14:51 | 
        (138) 3640?     | |||
| 140
    
        Харлампий Дымба 02.10.23✎ 14:55 | 
        (139) Нет. Классно, да?     | |||
| 141
    
        RomanYS 02.10.23✎ 15:03 | 
        (140) больше?     | |||
| 142
    
        Харлампий Дымба 02.10.23✎ 15:12 | 
        (141) Да, конечно. Если некогда решать, то наиболее вероятный ответ в (60).
 Но утверждать не могу, потому что надо тогда смотреть НОК() для всех перестановок (С из n по 4) для каждого разбиения числа 33 на n слагаемых - маловероятно, но возможно что-то и превысит то, что в (60). | |||
| 143
    
        RomanYS 02.10.23✎ 15:16 | 
        (142) понял, идея у меня была правильная. Но я вместо 9*11 взял 7*13     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |