码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷 [P3205] 合唱队

时间:2018-03-19 15:24:58      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:区间   ring   gpo   code   一个   AC   print   blog   ios   

区间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] 合唱队

标签:区间   ring   gpo   code   一个   AC   print   blog   ios   

原文地址:https://www.cnblogs.com/Mr-WolframsMgcBox/p/8602308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!