- [HNOI2010] 合唱队
- ?
- @ 2025-5-9 20:05:02
#include<iostream>
#include<cstring>
using namespace std;
int n,a[1001],dp[1001][1001][2];
int main(){
    cin >> n;
    for (int i=1;i<=n;i++){
        cin >> a[i];
        dp[i][i][0]=1;
        //dp[i][i][1]=1;
    }
    
    for (int i=2;i<=n;i++){             //长度
        for (int j=1;j<=n-i+1;j++){     //起点
            if (a[j]<a[j+1]){                       //假设第一个是新加进来的
                dp[j][j+i-1][0]+=dp[j+1][j+i-1][0];
                dp[j][j+i-1][0]%=19650827;
            }
            if (a[j]<a[j+i-1]){
                dp[j][j+i-1][0]+=dp[j+1][j+i-1][1];
                dp[j][j+i-1][0]%=19650827;
            }
            if (a[j+i-1]>a[j]){                     //假设最后一个是新加进来的
                dp[j][j+i-1][1]+=dp[j][j+i-2][0];
                dp[j][j+i-1][0]%=19650827;
            }
            if (a[j+i-1]>a[j+i-2]){
                dp[j][j+i-1][1]+=dp[j][j+i-2][1];
                dp[j][j+i-1][0]%=19650827;
            }
        }
    }
    cout << (dp[1][n][0]+dp[1][n][1])%19650827;
    return 0;
}
0 comments
  
  No comments so far...
            Information
- ID
- 380
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- # Submissions
- 43
- Accepted
- 12
- Uploaded By
 
      