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](代码片段

CodeForces 735E(树形DP)