现在菜的连这么明显的区间DP都看不出来了
太菜了太菜了
如 果 发 现 是 区 间 d p 应 该 就 蛮 好 写 如果发现是区间dp应该就蛮好写 如果发现是区间dp应该就蛮好写
定 义 d p [ i ] [ j ] [ 0 ] 为 合 唱 人 是 [ i , j ] 且 最 后 一 个 人 是 i 定义dp[i][j][0]为合唱人是[i,j]且最后一个人是i 定义dp[i][j][0]为合唱人是[i,j]且最后一个人是i
d p [ i ] [ j ] [ 1 ] 最 后 一 个 人 是 j dp[i][j][1]最后一个人是j dp[i][j][1]最后一个人是j
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod=19650827;
int n,dp[1009][1009][3],a[1009];
signed main()
{
cin >> n;
for(int i=1;i<=n;i++) cin >> a[i],dp[i][i][0]=1;
for(int l=2;l<=n;l++)
for(int i=1;i+l-1<=n;i++)
{
int j=i+l-1;
if( a[i]<a[i+1] )
dp[i][j][0]+=dp[i+1][j][0];
if( a[i]<a[j] )
dp[i][j][0]+=dp[i+1][j][1];
if( a[j]>a[i] )
dp[i][j][1]+=dp[i][j-1][0];
if( a[j]>a[j-1] )
dp[i][j][1]+=dp[i][j-1][1];
dp[i][j][0]%=mod;
dp[i][j][1]%=mod;
}
cout << (dp[1][n][0]+dp[1][n][1])%mod;
}