Вопрос на ДП. Идей нету как решать Your text to link here...этот вопрос. Благодарен за помощь.
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Вопрос на ДП. Идей нету как решать Your text to link here...этот вопрос. Благодарен за помощь.
Название |
---|
Давай взглянем на грамматику для ПСП.
Из правила №1 следует, что для n = 0, k = 0 ответ 1, также если k > n ответ 0.
Из правила №2 следует, что для
dp[n, k]
ответ равенdp[n-1, k-1] + x
.Теперь найдём x. Для этого переберём m — место в котором мы будем разбивать текущую ПСП на две других по правилу №3. Значит
x = sum(dp[m,i] * dp[n-m,j])
(Ещё надо как-то перебрать i и j, чтобы получить глубину k)Можно очень просто вот так: dp[n][m][k] — количество последовательностей из n скобок, сейчас открыто m, максимум было открыто k. Время куб, память при желании квадрат. Код, просто чтобы был. Набрать лучше самому, разумеется.
Можно ускорить до квадрата, если k будет иметь только два значения — требуемая вложенность уже достигнута или еще нет.