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 { ...
随机推荐
- 【webpack】config/index.js
// see http://vuejs-templates.github.io/webpack for documentation. var path = require('path') module ...
- pdo_mysql扩展以及测试
1.进入 PHP 的软件包 pdo 扩展目录中(注:php的tar包解压目录) 2.配置和编译文件 进入 在PHP源码包中进入 cd /data/php-5.6.36/ext/pdo_mysql 执行 ...
- PAT——1039. 到底买不买
小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...
- 获取 当前显示的 UIViewController
UIViewController * findBestVC(UIViewController *vc) { if (vc.presentedViewController) { return findB ...
- 网络测量中基于Sketch方法的调查
目录 LD Sketch SeqHash What's New reversible sketch Count-Sketch和Count-min sketch Diamond Sketch: Accu ...
- 【Step By Step】将Dotnet Core部署到Docker下
一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core—使用.Net Core + Entity FrameWor ...
- git删除指定文件夹
1.在本地仓库删除指定文件 git rm 文件名名称 2.在本地仓库删除指定文件夹 git rm -r 文件夹/ 3.提交修改 git commit -m"删除文件夹" 4.推送到 ...
- vue项目中分享到朋友圈,调用微信接口
虽然微信提供了jssdk,不代表可以点击按钮进行分享到朋友圈,是需要微信自带的浏览器右上角进行分享.手机浏览器需要浏览器支持分享到朋友圈的分享机制. 微信jssdk地址: https://mp.wei ...
- 利用PDCA工具改进周例会
PDCA简介 PDCA循环又叫戴明环,是美国质量管理专家休哈特博士首先提出的,由戴明采纳.宣传,获得普及,从而也被称为“戴明环”. PDCA最早用来解决全面质量管理问题,但是PDCA也可以用来作为一个 ...
- MySQL学习【第八篇索引优化】
一.建立索引的原则(规范) 1.选择唯一性索引 只要可以创建唯一性索引的,一律创建唯一索引(因为速度快呀) 判断是否能创建唯一索引,用count(列名),count(distinct(列名))一样就能 ...