Codeforces 1152D(dp)
Posted alphawa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1152D(dp)相关的知识,希望对你有一定的参考价值。
要点
- 寻找最多边的匹配的结论:贪心地从叶子开始找,最后答案都是奇数层下边的那条边。
- 设\(dp[i][j]\)表示当前长度为\(i\),平衡度为\(j\),平衡度为
(
数量减去)
数量。 - 增加左右括号转移,并将奇数层合法的加到ans中。
#include <cstdio>
const int maxn = 1005, mod = 1e9 + 7;
int n;
long long dp[maxn << 1][maxn << 1], ans;
int main() {
scanf("%d", &n);
dp[0][0] = 1;
for (int i = 0; i < 2 * n; i++) {
for (int j = 0; j <= i; j++) {
dp[i + 1][j + 1] = (dp[i + 1][j + 1] + dp[i][j]) % mod;
if (j) dp[i + 1][j - 1] = (dp[i + 1][j - 1] + dp[i][j]) % mod;
}
if (i % 2) {
for (int j = 0; j <= i && i + j <= 2 * n; j++)
ans = (ans + dp[i][j]) % mod;
}
}
return !printf("%lld\n", ans);
}
以上是关于Codeforces 1152D(dp)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 86C Genetic engineering(AC自动机+DP)
CodeForces 1005D Polycarp and Div 3(思维贪心dp)
Codeforces Round #267 (Div. 2) C. George and Job
代码源 Div1#104no crossing,Codeforces 793D,2100分,区间dp
[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段