您的位置:首页 > 其它

【BZOJ1996】【HNOI2010】合唱队 [区间DP]

2017-02-25 11:14 260 查看

合唱队

Time Limit: 4 Sec  Memory Limit: 64 MB
[Submit][Status][Discuss]

Description

  
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
using namespace std;

const int ONE=1005;
const int MOD=19650827;

int n;
int a[ONE];
int f[ONE][ONE][2];

int get()
{
int res,Q=1;    char c;
while( (c=getchar())<48 || c>57)
if(c=='-')Q=-1;
if(Q) res=c-48;
while((c=getchar())>=48 && c<=57)
res=res*10+c-48;
return res*Q;
}

int main()
{
n=get();
for(int i=1;i<=n;i++)
{
a[i]=get();
}

for(int i=1;i<=n;i++) f[i][i][1]=1;

for(int l=n;l>=1;l--)
for(int r=l+1;r<=n;r++)
{
f[l][r][0]=( f[l][r][0] + f[l+1][r][0] * (a[l]<a[l+1]) ) % MOD;
f[l][r][0]=( f[l][r][0] + f[l+1][r][1] * (a[l]<a[r]) ) % MOD;
f[l][r][1]=( f[l][r][1] + f[l][r-1][0] * (a[r]>a[l]) ) % MOD;
f[l][r][1]=( f[l][r][1] + f[l][r-1][1] * (a[r]>a[r-1]) ) % MOD;
}

printf("%d",(f[1]
[0]+f[1]
[1]) % MOD);
}
View Code

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: