WA 10pts
查看原帖
WA 10pts
965685
yyrwlj楼主2023/10/7 20:58

dp

#include <cstdio>
const int N = 1005;
int f[N][N][2],h[N]; // 0 is left
int main()
{
    int n;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        scanf("%d",&h[i]);
        f[i][i][0] = 1;
    }
    const int mod = 19650827;
    for (int l=1;l<n;l++)
        for (int i=1,j=i+l;j<=n;i++,j++)
        {
            if (h[i] < h[i + 1])
                f[i][j][0] = f[i + 1][j][0];
            if (h[i] < h[j - 1])
                (f[i][j][0] += f[i + 1][j][1]) %= mod;
            if (h[j] > h[i])
                f[i][j][1] = f[i][j - 1][0];
            if (h[j] > h[j - 1])
                (f[i][j][1] += f[i][j - 1][1]) %= mod;
        }
    printf("%d", (f[1][n][0] + f[1][n][1]) % mod);
    return 0;
}
2023/10/7 20:58
加载中...