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\n",ans*ans);
return 0;
}

codevs2215 三角形蛋糕的更多相关文章

  1. ZOJ 3537 Cake (区间DP,三角形剖分)

    题意: 给出平面直角坐标系上的n个点的坐标,表示一个多边形蛋糕,先判断是否是凸多边形,若否,输出"I can't cut.".若是,则对这个蛋糕进行3角形剖分,切n-3次变成n-2 ...

  2. canvas快速绘制圆形、三角形、矩形、多边形

    想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...

  3. Android快乐贪吃蛇游戏实战项目开发教程-05虚拟方向键(四)四个三角形按钮

    该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.如何判断点击的是哪个方向键按钮 在上篇教程中我们实现了左边的三角形按钮效果, ...

  4. Android快乐贪吃蛇游戏实战项目开发教程-04虚拟方向键(三)三角形按钮效果

    该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.知识点讲解 当我们点击系统自带的按钮时,按钮的外观会发生变化.上篇博文中我们 ...

  5. Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形

    该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.绘制三角形 在上一篇文章中,我们已经新建了虚拟方向键的自定义控件Direct ...

  6. 酷酷的CSS3三角形运用

    概述 在早期的前端Web设计开发年代,完成一些页面元素时,我们必须要有专业的PS美工爸爸,由PS美工爸爸来切图,做一些圆角.阴影.锯齿或者一些小图标. 在CSS3出现后,借助一些具有魔力的CSS3属性 ...

  7. CSS制作三角形和按钮

    CSS制作三角形和按钮 用上一篇博文中关于边框样式的知识点,能制作出三角形和按钮. 我先说如何制作三角形吧,相信大家在平时逛网站的时候都会看到一些导航栏中的三角形吧,比如说: 网易首页的头部菜单栏中, ...

  8. Effective前端3:用CSS画一个三角形

    p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...

  9. 通过CSS的border绘制三角形

    通过css的border 可以绘制出三角形, 不同的样式组合,有着不同的效果,可以控制它的大小,颜色,方向.看下面各种图形,相信可能还有很多图形,大家都没见过. 先写出公共的样式: .border { ...

随机推荐

  1. linux服务器部署nodejs项目

    一.安装nodejs 1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通 ...

  2. 【[POI2010]ANT-Antisymmetry】

    开始复习字符串了 第一步肯定得是\(hash\) 首先理性分析一波不可能出现长度为奇数的反回文串,对称轴位置取反之后肯定和原来不相等了 我们可以枚举所有回文串的对称中心,之后我们发现这个样子是具有单调 ...

  3. [Python web开发] 路由实现 (三)

    一.路由 1.1 什么是路由 简单说,就是路怎么走.就是按照不同的路径分发数据. URL就是不同资源的路径,不同路径应该对应不同的应用程序来处理. 所以,代码中要增加对路径的分支处理. 一个简单的路由 ...

  4. 枚举enum和enumerate

    #coding=utf-8 from enum import Enum #定义自己的枚举时需要使用class,继承Enum类 class Color(Enum): red=1 green=2 blue ...

  5. PAT——1032. 挖掘机技术哪家强

    为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每行给出一位 ...

  6. Struts2学习总结——文件上传与下载

    Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml v ...

  7. 杂记(那些我还容易混淆的c和c++知识)

    1: 定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析构函数.然后调用基类的析构函数.2:  多态性具体体现在运行和编译两个方面:在程序运行时的多态性 ...

  8. 查询表空间及已使用情況的SQL语句

    语句一: select  f.tablespace_name tablespace_name, round((d.sumbytes / 1024 / 1024 / 1024), 2) total_g, ...

  9. 批量kill杀死某些会话session的PL/SQL

    原文:http://blog.itpub.net/9240380/viewspace-666622/ SQL> declare 2 v_sid v$session.sid%type; --定义如 ...

  10. Ext JS 6和Sencha CMD 6 快速入门

    Ext JS 6和Sencha CMD 6的入门很简单.一个命令,即可生成一个功能完整的“通用”应用程序,可以运行在本地服务器上. 这个“通用”的应用程序包含一组核心的stores,模型(models ...