zoukankan      html  css  js  c++  java
  • tyvj1192 迎春舞会之集体舞

    背景

        HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。

    描述

        表演者排成n排,构成一个向前的正三角形(在屏幕上,即向下)。而就每个人,他有可能正面朝前(小的向前正三角形)、或向后三角形(小的向后正三角形)。
        然而这些人在服装上有明显区别——一部分穿冬季校服,其他的穿夏季校服。
        现在给出每个人的着衣情况,请你求穿夏季校服的同学所构成的最大正三角形,输出所含人数。
        

    输入格式

        第一排为n。
        接下来n排,第i排有2*i-1个有效字符(‘#’或‘-’,分别表示此同学穿冬季校服或穿夏季校服)。输入文件中出现空格,且空格只是为了保持整个三角形的形状。

    输出格式

        输出人数。

    测试样例1

    输入


    #-##----# 
    -----#- 
    ---#- 
    -#- 
    -

    输出

    9

    备注

    n<=100

    注意三角形只能小头朝下
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxn = 505;
    int n,a[maxn][maxn],f[maxn][maxn],ans,sum[maxn];
    int main(){
        cin>>n;
        char cmd;
        sum[1] = 1;
        for(int i = 1;i <= n;i++){
            for(int l = 1;l <= 2*(n-i) + 1;l++){
                int j = i + l - 1;
                scanf("%c",&cmd);
                while(cmd != '-' && cmd != '#') scanf("%c",&cmd);
                if(cmd == '#') a[i][j] = 1;
                else a[i][j] = 2;
            }
        }
        for(int i = 3;i <= 2 * n - 1;i += 2) sum[i] = sum[i-2] + i;
        for(int i = 1;i <= n;i++){
            for(int l = 1;l <= 2*(n-i) + 1;l++){
                int j = i + l - 1;
                if(a[i][j] == 2) f[i][j] = 1;
                if(l & 1) 
                    if(a[i][j] == 2 && a[i][j+1] == 2 && a[i][j+2] == 2 && a[i+1][j+1] == 2) f[i][j] = 3;
                ans = max(ans,f[i][j]);
            }
        }
        for(int k = 5;k <= 2 * n - 1;k += 2){
            for(int i = 1;i <= n;i++){
                for(int l = 1;l <= 2*(n-i) + 1;l++){
                    int j = i + l - 1;
                    if((l & 1) && f[i][j] >= k - 2 && f[i][j+2] >= k - 2 && f[i+1][j+1] >= k - 2){
                        f[i][j] = k;
                        ans = max(ans,k);
                    }
                }
            }
        }
        cout<<sum[ans];
        return 0;
    } 
  • 相关阅读:
    mysql删除重复记录语句的方法
    超详细mysql left join,right join,inner join用法分析
    CGLib动态代理原理及实现
    mysql开启慢查询日志及查询windows
    数据库事务隔离级别及脏读、幻读、不可重复读及传播行为
    java的动态代理机制详解
    MySQL常见面试题
    2019年的冬季,蒟蒻的PKUWC游记(12.20~12.23)
    初学生成函数(一)——普通生成函数
    转:基于jquery点击切换样式并且可以记忆cookie
  • 原文地址:https://www.cnblogs.com/hyfer/p/5754664.html
Copyright © 2011-2022 走看看