zoukankan      html  css  js  c++  java
  • luogu P3205 [HNOI2010]合唱队 区间dp

    #include <bits/stdc++.h>
    using namespace std;
    const int N=2020; 
    int f[N][N][2],a[N];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1; i<=n; i++)
            cin>>a[i];
        for(int i=1; i<=n; i++)//默认从左边进来 
            f[i][i][0]=1;
        //f[i,j,0] 0 i从左端进来
        //f[i,j,0] 1 j从右边进来 
        //从左边进来肯定前1个人比他高,前1个人有2种情况,要么在i+1号位置,要么在j号位置。
        //从右边进来肯定前1个人比他矮,前1个人有2种情况,要么在j-1号位置,要么在i号位置。    
        for(int len=1; len<=n; len++)
            for(int i=1,j=i+len; j<=n; i++,j++)
            {
                //对于区间i,j 
                //i从左边进来,两种情况
                //小于i+1,i+1是区间i+1,j的左端点,从左边进来的 
                //小于j,  j  是区间i+1,j的右端点,从右边进来 
                if(a[i]<a[i+1])
                    f[i][j][0]+=f[i+1][j][0];
                if(a[i]<a[j])
                    f[i][j][0]+=f[i+1][j][1];
                //j从右边进来,两种情况
                //大于i  ,i  是区间i,j-1的左端点
                //大于j-1,j-1是区间i,j-1的右端点 
                if(a[i]<a[j])
                    f[i][j][1]+=f[i][j-1][0];
                if(a[j]>a[j-1])
                    f[i][j][1]+=f[i][j-1][1];
                f[i][j][0]%=19650827;
                f[i][j][1]%=19650827;
            }
        cout<<(f[1][n][0]+f[1][n][1])%19650827;
        return 0;
    }
  • 相关阅读:
    Java NIO中的FileLock(文件锁)
    Java NIO中的Channel接口
    Java NIO中的Buffer类
    Java NIO简介
    Java 自定义序列化、反序列化
    Java 对象的序列化、反序列化
    SVN常用操作
    Windows下SVN的下载、安装
    Java RandomAccessFile类
    Java的IO流
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12927071.html
Copyright © 2011-2022 走看看