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

bzoj 1996

时间:2018-08-09 23:09:14      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:bsp   c++   std   理想   div   根据   int   span   include   

区间 dp

 $f[i][j][1/0]$ 表示将理想数列的 $[i,j]$ 区间排好的方案数

 $f[i][j][1]$ 表示最后进去的是第 $i$ 个人

 $f[i][j][0]$ 表示最后进去的是第 $j$ 个人

根据判断条件进行转移

#include <bits/stdc++.h> 

const int N = 1010, Mod = 19650827;

int f[N][N][2];
int A[N];

int main() {
    int n;
    std:: cin >> n;
    for(int i = 1; i <= n; i ++) std:: cin >> A[i];
    for(int i = 1; i <= n; i ++) f[i][i][1] = 1; //f[i][i][0] = 1;
    for(int Len = 2; Len <= n; Len ++) {
        for(int i = 1; i <= n; i ++) {
            int j = i + Len - 1;
            if(j > n) continue;
            if(A[i] < A[i + 1]) f[i][j][1] = (f[i][j][1] + f[i + 1][j][1]) % Mod;
            if(A[i] < A[j]) f[i][j][1] = (f[i][j][1] + f[i + 1][j][0]) % Mod;
            if(A[j] > A[j - 1]) f[i][j][0] = (f[i][j][0] + f[i][j - 1][0]) % Mod;
            if(A[j] > A[i]) f[i][j][0] = (f[i][j][0] + f[i][j - 1][1]) % Mod;
        }
    }
    std:: cout << (f[1][n][1] + f[1][n][0]) % Mod;
    return 0;
}

 

bzoj 1996

标签:bsp   c++   std   理想   div   根据   int   span   include   

原文地址:https://www.cnblogs.com/shandongs1/p/9451970.html

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