Салют! Есть такая интересная задача. Начиная с пустой строки путём добавления одного

любого символа либо копирования любой части уже получившейся строки, построить целевую строку. Операции добавления и копирования имеют определённую стоимость. Необходимо найти наименьшую стоимость получения целевой строки.

Пример 1. Целевая строка — "abab". Цена добавления — 2, копирования — 3.
- Начинаем с пустой строки "".
- Добавляем символ "a" (цена 2): "a"
- Добавляем символ "b" (цена 2): "ab"
- Копируем "ab" (цена 3): "abab"
Итого минимальная цена строки = 7.

Пример 2. Целевая строка — "ayawyayawr". Цена добавления — 6, копирования — 8.
- Начинаем с пустой строки "".
- Добавляем "a" (цена 6): "a"
- Добавляем "y" (цена 6): "ay"
- Добавляем "a" (цена 6): "aya"
- Добавляем "w" (цена 6): "ayaw"
- Добавляем "y" (цена 6): "ayawy"
- Копируем "ayaw" (цена 8): "ayawyayaw"
- Добавляем "r" (цена 6) : "ayawyayawr"
Итого минимальная цена строки = 44.

Есть идея реализации за квадрат.

Но нужно быстрее (линия или n*log n).
Есть мыли на этот счёт?

10 ответов

16 просмотров

А как вы решили за квадрат? Возможно, есть смысл найти там узкое место и подобрать структуру данных под его ускорение

Eugene-Krasnikov (ᴊɪɴ x) Автор вопроса

но граф то ациклический

Nikolai Karpov
но граф то ациклический

Там мультиребро за более раннее вхождение

Липатов говорил, что автор сего афоризма про логарифм -- Ландау, но возможно, что "музыка и слова народные"

Nikolay Buzynin
Липатов говорил, что автор сего афоризма про логар...

Могу предоставить что это он, впрочем как и то что ему это приписали)

очевидно нет

К тебе специальный вопрос https://t.me/proalgorithms/98421

Constantine Drozdov
К тебе специальный вопрос https://t.me/proalgorith...

а ты хочешь это чтобы с кешом лучше дружило?

Похожие вопросы

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта