Вопрос на ДП. Идей нету как решать Your text to link here...этот вопрос. Благодарен за помощь.
№ | Пользователь | Рейтинг |
---|---|---|
1 | jiangly | 3846 |
2 | tourist | 3799 |
3 | orzdevinwang | 3706 |
4 | jqdai0815 | 3682 |
5 | ksun48 | 3590 |
6 | Ormlis | 3533 |
7 | Benq | 3468 |
8 | Radewoosh | 3463 |
9 | ecnerwala | 3451 |
9 | Um_nik | 3451 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 165 |
2 | -is-this-fft- | 161 |
3 | Qingyu | 160 |
4 | Dominater069 | 158 |
5 | atcoder_official | 157 |
6 | adamant | 154 |
7 | Um_nik | 151 |
8 | djm03178 | 150 |
9 | luogu_official | 149 |
10 | awoo | 147 |
Вопрос на ДП. Идей нету как решать 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 будет иметь только два значения — требуемая вложенность уже достигнута или еще нет.