现在菜的连这么明显的区间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;
}