• [BZOJ1996][Hnoi2010]chorus 合唱队 区间dp


    1996: [Hnoi2010]chorus 合唱队

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

    Description

    Input

    Output

    Sample Input

    4
    1701 1702 1703 1704

    Sample Output

    8

    HINT

     

    Source

    简单区间dp

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdlib>
     4 #include<cstdio>
     5 #include<cmath>
     6 #include<algorithm>
     7 #include<queue>
     8 #define LL long long
     9 #define mod 19650827
    10 using namespace std;
    11 int read() {
    12     char ch=getchar();int x=0,f=1;
    13     while(!isdigit(ch)){ch=getchar();}
    14     while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
    15     return x;
    16 }
    17 int n;
    18 int f[1001][1001][2];
    19 int a[1001];
    20 int main() {
    21     scanf("%d",&n);
    22     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    23     for(int i=1;i<=n;i++) f[i][i][0]=1;
    24     for(int j=1;j<=n;j++) {
    25         for(int i=1;i+j<=n;i++) {
    26             int k=i+j;
    27             if(a[i]<a[k]) f[i][k][0]+=f[i+1][k][1];
    28             if(a[i]<a[i+1]) f[i][k][0]+=f[i+1][k][0];
    29             if(a[k]>a[i]) f[i][k][1]+=f[i][k-1][0];
    30             if(a[k]>a[k-1]) f[i][k][1]+=f[i][k-1][1];
    31             f[i][k][1]%=mod;f[i][k][0]%=mod;
    32         }
    33     }
    34     printf("%d",(f[1][n][0]+f[1][n][1])%mod);
    35 }
    View Code
    O(∩_∩)O~ (*^__^*) 嘻嘻…… O(∩_∩)O哈哈~
  • 相关阅读:
    修补瘪胎
    胎压监测系统(DWS)
    路径参数:Path Parameters
    C++线程池
    C++std::list
    C++std::is_same
    什么时候需要加锁
    C++14相比C++11多了的功能
    C++11关键字decltype
    C++std::result_of
  • 原文地址:https://www.cnblogs.com/wls001/p/7808923.html
Copyright © 2020-2023  润新知