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\n",ans*ans);
return 0;
}
codevs2215 三角形蛋糕的更多相关文章
- ZOJ 3537 Cake (区间DP,三角形剖分)
题意: 给出平面直角坐标系上的n个点的坐标,表示一个多边形蛋糕,先判断是否是凸多边形,若否,输出"I can't cut.".若是,则对这个蛋糕进行3角形剖分,切n-3次变成n-2 ...
- canvas快速绘制圆形、三角形、矩形、多边形
想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...
- Android快乐贪吃蛇游戏实战项目开发教程-05虚拟方向键(四)四个三角形按钮
该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.如何判断点击的是哪个方向键按钮 在上篇教程中我们实现了左边的三角形按钮效果, ...
- Android快乐贪吃蛇游戏实战项目开发教程-04虚拟方向键(三)三角形按钮效果
该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.知识点讲解 当我们点击系统自带的按钮时,按钮的外观会发生变化.上篇博文中我们 ...
- Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形
该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.绘制三角形 在上一篇文章中,我们已经新建了虚拟方向键的自定义控件Direct ...
- 酷酷的CSS3三角形运用
概述 在早期的前端Web设计开发年代,完成一些页面元素时,我们必须要有专业的PS美工爸爸,由PS美工爸爸来切图,做一些圆角.阴影.锯齿或者一些小图标. 在CSS3出现后,借助一些具有魔力的CSS3属性 ...
- CSS制作三角形和按钮
CSS制作三角形和按钮 用上一篇博文中关于边框样式的知识点,能制作出三角形和按钮. 我先说如何制作三角形吧,相信大家在平时逛网站的时候都会看到一些导航栏中的三角形吧,比如说: 网易首页的头部菜单栏中, ...
- Effective前端3:用CSS画一个三角形
p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...
- 通过CSS的border绘制三角形
通过css的border 可以绘制出三角形, 不同的样式组合,有着不同的效果,可以控制它的大小,颜色,方向.看下面各种图形,相信可能还有很多图形,大家都没见过. 先写出公共的样式: .border { ...
随机推荐
- POJ2720 Last Digits
嘟嘟嘟 一道题又写了近两个点-- 这道题直接暴力快速幂肯定会爆(别想高精),所以还是要用一点数学知识的- 有一个东西叫欧拉降幂公式,就是: \(x ^ y \equiv x ^ {y \ \ ...
- cocos2d-x中关于打包成APK的问题
转载自:http://blog.csdn.net/u013315178/article/details/51254630 之前在网上看了很多的帖子大多数用ide 来打包 太麻烦了 而且一般没有人现场指 ...
- mysql存储过程学习(一)
转载 什么是存储过程,存储过程的作用及优点 mysql存储过程详细教程 mysql 使用存储过程批量插数据 一.存储过程介绍: 存储过程(Stored Procedure)是一组为了完成特定功能的 ...
- sqoop2启动job报错
set option --name verbose --value true #打开报错详情输出 Exception has occurred during processing command ...
- 使用java.util.List的subList方法进行分页
java.util.List中有一个subList方法,用来返回一个list的一部分视图. List<E> subList(int fromIndex, int toIndex); 它返回 ...
- Linux基础-4.正文处理命令及tar命令
1.使用cat命令进行文件的纵向合并 1)掌握使用cat命令的纵向合并 a)例如:使用cat命令将test1.file1.txt和file2这三个文件纵向合并为file文件的命令为: cat test ...
- STM32 HAL库学习系列第5篇 定时器TIM---编码器接口模式配置
cube基本配置,外设开启编码器,串口2 可能大家在设置的时候有这个错误 错误:error: #20: identifier "TIM_ICPOLARITY_BOTHEDGE" ...
- x01.os.24: 来点代码
<Orange'S 一个操作系统的实现>源代码 <Linux 0.11 内核完全注释>源代码 linux-0.12 源代码: 解决了 Not Owner 问题 闲来无事,在 ...
- ant-design-pro弹出框表单设置默认值
项目需求需要使用ant-design-pro的弹出框表单并在表单出现时设置默认值 然而按照官方的示例给 <Input> 标签设置 defaultValue 时发现并没有效果.如下所示: & ...
- 20155202 20155222 信息安全技术概论实验一 PGP的使用
20155202 信息安全技术概论实验一 PGP的使用 实验原理 一.PGP简介 在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分.邮件的安全问题也就突出了,大家都知道在互联网上传输的数据 ...