|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |