• 洛谷 P3205 [HNOI2010]合唱队


    题目传送门

    解题思路:

    f[i][j][0]表示i~j区间最后一个进来的元素是i.

    f[i][j][1]表示i~j区间最后一个进来的元素是j.

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 int n,a[1001],f[1001][1011][2];
     8 
     9 int main() {
    10     scanf("%d",&n);
    11     for(int i = 1;i <= n; i++)
    12         scanf("%d",&a[i]);
    13     for(int i = 1;i <= n; i++)
    14         f[i][i][0] = 1;//只有一个元素时,默认从左边进来的 
    15     for(int len = 1;len < n; len++) 
    16         for(int i = 1,j = len + i;j <= n; i++,j++) {
    17             if(a[i] < a[j]) f[i][j][0] += f[i+1][j][1];
    18             if(a[i] < a[i+1]) f[i][j][0] += f[i+1][j][0];
    19             if(a[j] > a[i]) f[i][j][1] += f[i][j-1][0];
    20             if(a[j] > a[j-1]) f[i][j][1] += f[i][j-1][1];
    21             f[i][j][1] %= 19650827;
    22             f[i][j][0] %= 19650827;
    23         }
    24     printf("%d",(f[1][n][1] + f[1][n][0]) % 19650827);
    25     return 0;
    26 } 
  • 相关阅读:
    百度搜索技巧
    phpstorm知识点
    A-Z
    边框
    display
    布局
    盒模型
    浮动
    字体与图标
    pselect 问题
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/12247104.html
Copyright © 2020-2023  润新知