洛谷 [P3205] 合唱队

Posted Mr_Wolfram的高维空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 [P3205] 合唱队相关的知识,希望对你有一定的参考价值。

区间DP

手动模拟一下,我们发现本题就是一个左右加数的区间DP

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
const int MAXN = 1005, MOD = 19650827;
int num[MAXN], dp[MAXN][MAXN][2], n;
int main() {
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> num[i], dp[i][i][0] = 1;
    for(int k = 2; k <= n; k++) {
        for(int i = 1; i + k - 1 <= n; i++) {
            int j = i + k - 1;
            if(num[j] > num[j - 1]) dp[i][j][1] += dp[i][j - 1][1];
            if(num[j] > num[i]) dp[i][j][1] += dp[i][j - 1][0];
            if(num[i] < num[i + 1]) dp[i][j][0] += dp[i + 1][j][0];
            if(num[i] < num[j]) dp[i][j][0] += dp[i + 1][j][1];
            dp[i][j][1] %= MOD; dp[i][j][0] %= MOD;
        }
    }
    printf("%d\n", (dp[1][n][0] + dp[1][n][1]) % MOD);
    return 0;
}

以上是关于洛谷 [P3205] 合唱队的主要内容,如果未能解决你的问题,请参考以下文章

P3205 [HNOI2010]合唱队

luogu P3205 合唱队

codevs1058 合唱队形==洛谷P1091 合唱队形

洛谷P1091 合唱队形

洛谷 P1091 合唱队形 题解

洛谷P3847 [TJOI2007]调整队形