zoukankan      html  css  js  c++  java
  • codevs2215 三角形蛋糕

    codevs2215 三角形蛋糕


    原题链接


    煞笔题???
    开始一看似乎没啥思路的样子
    然后想了一下
    额。。。
    首先啃腚考虑缩进存储
    然后看一下这样的性质

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

    |
    V

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

    and

    -----
     ---
      -
    

    |
    V

    -----
    ---
    -
    

    那么三角形就变成这个鬼样子了嘛。
    那么设f[i][j]表示(i,j)为三角形最下面的那个点向上能扩展的最多行数
    s[i][j]='#'->f[i][j]=0
    s[i][j]='-'->f[i][j]=min(f[i-1][j],f[i-1][j-1],f[i-1][j-2])+1
    答案为(max){(f[i][j]^2)}.
    然后你会发现WA了
    答案小了
    原因是三角形可能有倒的
    重新YY出另一个状态:
    那么设f[i][j]表示(i,j)为三角形最上面的那个点向下能扩展的最多行数
    转移差不多,可以看代码
    然后你会发现再次WA
    答案大了(QwQ)
    原因是。。。
    一个点可能无法更新答案但还是更新了!!!
    比如这个点对应的三角形是倒的 然而更新了正的状态,特判一下


    Code

    // It is made by XZZ
    #include<cstdio>
    #include<algorithm>
    #define Fname "trigon"
    using namespace std;
    #define rep(a,b,c) for(rg int a=b;a<=c;a++)
    #define drep(a,b,c) for(rg int a=b;a>=c;a--)
    #define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
    #define il inline
    #define rg register
    #define vd void
    typedef long long ll;
    il int gi(){
        rg int x=0;rg char ch=getchar();
        while(ch<'0'||ch>'9')ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x;
    }
    char c[101][202];
    int f[101][202],g[101][202];
    int main(){
        #ifdef xzz
        freopen(Fname".in","r",stdin);
        freopen(Fname".out","w",stdout);
        #endif
        int n=gi();
        rep(i,1,n)scanf("%s",c[i]+1);
        int ans=0;
        rep(i,1,n*2-1)if(c[1][i]!='#')f[1][i]=ans=1;
        rep(i,2,n)drep(j,(n-i)*2+1,1){
    	if(c[i][j]!='#')f[i][j]=min(f[i-1][j],min(f[i-1][j+1],f[i-1][j+2]))+1;
    	if(j&1)ans=max(ans,f[i][j]);
        }
        if(c[n][1]=='#')g[n][1]=1;
        drep(i,n-1,1)drep(j,(n-i)*2+1,1){
    	if(j<3||j>(n-i-1)*2+1)g[i][j]=c[i][j]=='-';
    	else if(c[i][j]!='#')g[i][j]=min(g[i+1][j],min(g[i+1][j-1],g[i+1][j-2]))+1;
    	if(!(j&1))ans=max(ans,g[i][j]);
        }
        printf("%d
    ",ans*ans);
        return 0;
    }
    
  • 相关阅读:
    Eclipse 插件开发 —— 深入理解查找(Search)功能及其扩展点
    Spring Auto Scanning Components
    SSH架构简单总结
    eclipse进行开发
    jasper ireport create a report with parameters without sql query
    VARCHAR2转换为CLOB碰到ORA-22858错误
    cannot find w3wp.exe in VS
    10 things you should know about NoSQL databases
    Notifications Nagios
    Serializable
  • 原文地址:https://www.cnblogs.com/xzz_233/p/7545827.html
Copyright © 2011-2022 走看看