powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Относительно простые задачки
25 сообщений из 339, страница 11 из 14
Относительно простые задачки
    #39936327
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
разрезать равносторонний треугольник на 2 куска равной площади, так чтобы длина линии разреза была минимальной
Куски односвязные?
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936330
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
Имя пользователя1
разрезать равносторонний треугольник на 2 куска равной площади, так чтобы длина линии разреза была минимальной
Куски односвязные?
да
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936466
labarad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имя пользователя1
labarad,

В худших случаях по прежнему 5*N, хотя таких кейсов намного меньше

Если решать задачу практически в виде алгоритма для стандартного компа, то подсчитать количество вагонов можно за N, т.е. всего за один проход:

1. Запомнить состояние нулевого вагона.
2.а Если состояние следующего вагона НЕ совпадает со значением п.1 (нулевой вагон), то
- идти дальше в следующий вагон.
2.б Если состояние следующего вагона совпадает со значением п.1 (нулевой вагон), то
- изменить состояние текущего вагона и
- проверить состояние нулевого вагона: если состояние нулевого вагона изменилось (не совпадает с п.1), то круг замкнулся
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936568
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это
labarad
можно за N

противоречит этому
labarad
проверить состояние нулевого вагона

т.к. "проверить состояние нулевого вагона" = вернутся в нулевой вагон, и так много раз.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936584
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
это
labarad
можно за N

противоречит этому
labarad
проверить состояние нулевого вагона

т.к. "проверить состояние нулевого вагона" = вернутся в нулевой вагон, и так много раз.
именно.

"для стандартного компа", у нас тут двусвязный кольцевой список с булевскими значениями, и всего один указатель на элемент, примерно так.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936661
labarad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имя пользователя1
msLex
...
т.к. "проверить состояние нулевого вагона" = вернутся в нулевой вагон, и так много раз.
именно.

"для стандартного компа", у нас тут двусвязный кольцевой список с булевскими значениями, и всего один указатель на элемент, примерно так.

Друзья,

Нисколько не спорю, что, например, при ограничении функционала железа невозможно оптимизировать алгоритм. Однако, на компе, где можно программно иметь не один, а два указателя (в поезде находится два человека, а не один) производительность можно повысить аж в 5 раз. Что, согласитесь, на больших объёмах весьма существенно - час будет прога считать данные или пять часов? И цена этому ускорению - условные 4 или 8 байт. :)
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936706
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labarad,

решение чем-то напоминает "я же не отдам некту яблоко, хоть он дерись"
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936748
labarad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr Sharahov
labarad,

решение чем-то напоминает "я же не отдам некту яблоко, хоть он дерись"

Могу только повторить: эффективность реализации алгоритма объективно зависит от платформы, на которой он будет исполняться.

Например, если проектируете железо, то добавление простенькой функции хранения дополнительного указателя позволит увеличить скорость обработки данных в пять раз. Стоит ли учитывать возможность такой оптимизации, думаю, вопрос риторический.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39936837
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
labarad,

теперь уже больше похоже на "как пройти на Дерибасовскую"
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938150
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iOracleDev
Обозначим стартовый вагон буковкой A, выключим в нем свет и пойдем по ходу поезда, идем пока свет в вагонах горит, дошли до вагона с выключенным светом, обозначим его буковкой B, включаем в нем свет и идем обратно в A, если в A горит свет, значит мы обошли все вагоны, если свет в A выключен, то включаем его и возвращаемся в вагон B, выключаем в вагоне B свет, назначаем вагон B вагоном A и далее повторяем описанную процедуру, до тех пор пока не обнаружим в A свет.


а если всего будет 2 вагона (но мы этого не знаем) и в обоих свет выключен?
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938188
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn
iOracleDev
Обозначим стартовый вагон буковкой A, выключим в нем свет и пойдем по ходу поезда, идем пока свет в вагонах горит, дошли до вагона с выключенным светом, обозначим его буковкой B, включаем в нем свет и идем обратно в A, если в A горит свет, значит мы обошли все вагоны, если свет в A выключен, то включаем его и возвращаемся в вагон B, выключаем в вагоне B свет, назначаем вагон B вагоном A и далее повторяем описанную процедуру, до тех пор пока не обнаружим в A свет.


а если всего будет 2 вагона (но мы этого не знаем) и в обоих свет выключен?
с двумя и даже с одним вагоном всё нормально работает, можно легко проверить.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938199
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задачи пока без решений:
22090677 Есть строка длиной 99 символов, причем все символы в строке разные.
За одно действие можно взять 2 соседние подстроки и обменять местами (например, было "...abcdefg...", стало "...aefbcdg...", поменяли красную и синюю подстроки).
Сколько минимум действий понадобится, чтобы развернуть строку задом наперед?
----
22095992 Множество А изначально содержит 2 элемента - числа 1 и 4. За одно действие можно добавить туда число (a+b+ab), где a и b - любые два числа из А, возможно, одинаковые. Получится ли на каком-то шаге добавить туда какое-нибудь число вида 2*10 k , где k - натуральное (то есть число 200...0), и если да, то как?
----
22096932 разрезать равносторонний треугольник на 2 куска равной площади, так чтобы длина линии разреза была минимальной
----
22096932 дан треугольник с углами 20 гр., 60 гр., 100 гр. Его разрезают по биссектрисе. Потом любой из полученных кусков тоже разрезается по биссектрисе. И так далее. Можно ли на каком-то этапе получить треугольник, подобный исходному?
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938227
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имя пользователя1,

с двумя вагонами, при условии их идентичности и замкнутости и свет может быть включен или не включен, и если свет выключен в обоих, при указанных выше действиях получим включенный свет в обоих и безконечный бег по кругу.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938230
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn
при указанных выше действиях получим включенный свет в обоих и безконечный бег по кругу
нет.
при каждом включении света мы возвращаемся к вагону А (при возврате считаем вагоны в обратную сторону, и зная сколько прошли вагонов "вперед", легко можем вернуться в указанный) и проверяем в нем свет, который оставили выключенным.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938262
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имя пользователя1,

согласен, зря это я ...
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938270
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn
зря это я ...
штраф - решение для 22100539
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938292
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
Имя пользователя1
разрезать равносторонний треугольник на 2 куска равной площади, так чтобы длина линии разреза была минимальной
Куски односвязные?
Это какая по счёту проблема Гильберта? дайте премию скорей ...
Открывая страницу для ответа, я собирался доказать, что достаточно срезать верхушку самого маленького угла параллельно противоп-й стороне. Отсечь ~sqr(3)/2-ую часть этой высоты. И тогда длина среза~sqr(3)*a. Для произвольного тр-ка. Т.к. любая незамкнутая спрямляемая и непрерывная кривая обязательно пересечёт этот срез ==> её длина будет больше.
Конечно и в цифрах тоже я могу ошибаться, проверять не буду.

Но пока ждал открытия страницы, подумал, зачем обязательно открытую кривую? Тем более, в условии равносторонний тр-к. А вдруг окружность или квадрат внутри?
Да вроде при одинаковой площади (а площадь мы знаем) наименьший периметр имеет окружность. Вот не помню в каком это классе замкнутых кривых. ПОлучатся R ~ a/2/sqr(2pi).
Тогда длина = a*sqr(pi/2).
Если снова не ошибся.

Добавил для полноты: это меньше вписанной окр.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938299
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1 22096932 дан треугольник с углами 20 гр., 60 гр., 100 гр. Его разрезают по биссектрисе. Потом любой из полученных кусков тоже разрезается по биссектрисе. И так далее. Можно ли на каком-то этапе получить треугольник, подобный исходному? Получается, что резать можно только всё время через одну и ту же вершину?
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938328
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98
Соколинский Борис
пропущено...
Куски односвязные?
Это какая по счёту проблема Гильберта? дайте премию скорей ...
Открывая страницу для ответа, я собирался доказать, что достаточно срезать верхушку самого маленького угла параллельно противоп-й стороне. Отсечь ~sqr(3)/2-ую часть этой высоты. И тогда длина среза~sqr(3)*a. Для произвольного тр-ка. Т.к. любая незамкнутая спрямляемая и непрерывная кривая обязательно пересечёт этот срез ==> её длина будет больше.
Конечно и в цифрах тоже я могу ошибаться, проверять не буду.

Но пока ждал открытия страницы, подумал, зачем обязательно открытую кривую? Тем более, в условии равносторонний тр-к. А вдруг окружность или квадрат внутри?
Да вроде при одинаковой площади (а площадь мы знаем) наименьший периметр имеет окружность. Вот не помню в каком это классе замкнутых кривых. ПОлучатся R ~ a/2/sqr(2pi).
Тогда длина = a*sqr(pi/2).
Если снова не ошибся.

Добавил для полноты: это меньше вписанной окр.
что-то не очень.
Линия разреза очевидно должна быть меньше стороны треугольника. Даже если просто разрезать по высоте, длина разреза будет a*sqrt(3)/2, а это далеко не минимум.
exp98
Имя пользователя1 22096932 дан треугольник с углами 20 гр., 60 гр., 100 гр. Его разрезают по биссектрисе. Потом любой из полученных кусков тоже разрезается по биссектрисе. И так далее. Можно ли на каком-то этапе получить треугольник, подобный исходному?
Получается, что резать можно только всё время через одну и ту же вершину?нет, каждый раз выбираем произвольную вершину, потом берём один из двух получившихся кусков
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938352
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
задачи пока без решений:
22095992 Множество А изначально содержит 2 элемента - числа 1 и 4. За одно действие можно добавить туда число (a+b+ab), где a и b - любые два числа из А, возможно, одинаковые. Получится ли на каком-то шаге добавить туда какое-нибудь число вида 2*10 k , где k - натуральное (то есть число 200...0), и если да, то как?
Ответ - нет. Доказательство следующее:
Возьмем множество B, такое что B k =A k +1. Тогда любой B k =B i *B j , т.е все элементы B в разложении на простые множители должны иметь только 2 и 5.
2*10 k +1 всегда будет иметь 3, т.е. не входит в B.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938361
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис
Имя пользователя1
задачи пока без решений:
22095992 Множество А изначально содержит 2 элемента - числа 1 и 4. За одно действие можно добавить туда число (a+b+ab), где a и b - любые два числа из А, возможно, одинаковые. Получится ли на каком-то шаге добавить туда какое-нибудь число вида 2*10 k , где k - натуральное (то есть число 200...0), и если да, то как?
Ответ - нет. Доказательство следующее:
Возьмем множество B, такое что B k =A k +1. Тогда любой B k =B i *B j , т.е все элементы B в разложении на простые множители должны иметь только 2 и 5.
2*10 k +1 всегда будет иметь 3, т.е. не входит в B.
верно.

я чуть по другому решил: все элементы из А при делении на 3 дают остаток 0 или 1
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938368
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1

22090677 Есть строка длиной 99 символов, причем все символы в строке разные.
За одно действие можно взять 2 соседние подстроки и обменять местами (например, было "...abcdefg...", стало "...aefbcdg...", поменяли красную и синюю подстроки).
Сколько минимум действий понадобится, чтобы развернуть строку задом наперед?


Я взял короткую строку abcd. Для простоты пускай ее размер будет кратным 2^n.
Тогда чтобы ее перевернуть можно сделать дерево действий.
1. abcd => (ab)(cd) => swap => (cd)(ab)
2. Повторить рекурсивно для каждой группы до тех пор пока в группе не будет 1 символ.
(d)(c)(b)(a)

Тоесть за 3 свопа мы перевернули 4 символьную строку.

Для 99 символов будет логарифм2 высоты дерево свопов.

Но беря во внимание что на последнем уровне количество листьев будет ]99/2[ = 50

То моё древо-видное решение будет ничем не лучше чем стандартная функция реверса строки.
Которая делает тоже самое за гарантированное число 50 а для древо-видного свопа нужно еще
посчитать порядка 7 уровне дерева сверху.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938376
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
а для древо-видного свопа нужно еще
посчитать порядка 7 уровне дерева сверху.
там будет ещё примерно столько же обменов )
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938384
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
mayton
а для древо-видного свопа нужно еще
посчитать порядка 7 уровне дерева сверху.
там будет ещё примерно столько же обменов )

А у этой задачи точно есть решение? Просто я не слышал чтобы кто-то сильно переживал
по поводу o(n) reverse.
...
Рейтинг: 0 / 0
Относительно простые задачки
    #39938389
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Имя пользователя1
пропущено...
там будет ещё примерно столько же обменов )

А у этой задачи точно есть решение? Просто я не слышал чтобы кто-то сильно переживал
по поводу o(n) reverse.
эту задачу не надо рассматривать как реализацию reverse. Никто в здравом уме не будет реверсить строку или массив подобным образом. Просто головоломка, на подумать, размять мозг, отвлечься от кодерской рутины.
...
Рейтинг: 0 / 0
25 сообщений из 339, страница 11 из 14
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Относительно простые задачки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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