[TK] 三角蛋糕 hzoi-tg#261
同机房大佬也写了这道题的 题解.
我在另一篇 题解 中提到了这类问题的通解,接下来我们依照此通解思考该题.
问题处理
首先我们来定义三角形的表示方式. 定义 \(f[i][j]\) 表示三角形 \((i,j)\) 的最大边长,其中三角形 \((i,j)\) 为垂直顶点坐标为 \((i,j)\) 的三角形. (垂直顶点指正下方顶点或正下方顶点)
进行初始化:使所有完好的蛋糕块所在坐标的最大边长都为 \(1\) .
然后进行状态转移方程的推理:
为了坐标便于表示,我们先把蛋糕左对齐,如图.
101100001
0000010
00010
010
0
101100001
0000010
00010
010
0
再放一个比较直观的图:

对应着来看,我们发现,正三角和倒三角的处理方式是不同的,所以我们一个一个解决.
先来看倒三角,也就是它的顶点在最上方. 我们发现,要想使边长从 \(1\) 变为 \(2\) ,需要这个三角形的正上方,左上方,右上方都是完好的. 左对齐来看,需要完好的就是正上方,右上方和更右边的一个.
注意到这个图中有一个边长为 \(3\) 的倒三角形,那么我们如何从 \(2\) 变为 \(3\) 呢? 依照刚才的思路,我们发现只需要保证此三角形和它上方的三角形完好,并且它左上方,右上方的三角形的最大边长都为 \(2\) . 也就是下图这样.

标蓝的为最大长度为 \(2\) 的三角形,标红的为需要完好的三角形.
发现一定理:假如一个三角形和它上方的三角形都完好,且左上方,右上方的三角形均不大于 \(n\),那么这个三角形的最大边长为\(n+1\).
由此,对应左对齐坐标,推出状态转移方程:
\]
同理,正三角的状态转移方程为:
\]
找出最大值即可
另外. 如何判断一个三角形是正三角还是倒三角呢? 其实也很简单:顶点是正三角的三角形就是正三角. 而我们左对齐的意义就出现了:可以发现,奇数列的顶点全是倒三角,偶数列的顶点全是正三角,所以遍历的时候直接遍历所有奇数列或偶数列即可.
细节处理
注意到:第一行的顶点无法构成倒三角,最后一行的顶点无法构成正三角,第二列的顶点无法构成正三角. 遍历的时候直接跳过即可.
代码实现
点击查看代码
cin>>n;
for(int i=1;i<=n;++i){
for(int j=1;j<=(n-i)*2+1;++j){
scanf("%1d",&f1[i][j]);
f2[i][j]=f1[i][j]=!f1[i][j];
}
}
for(int k=1;k<=2;++k){
for(int i=2;i<=n;++i){
for(int j=1;j<=(n-i)*2+1;j+=2){
if(f1[i][j]&&f1[i-1][j+1]){
f1[i][j]=min(f1[i-1][j],f1[i-1][j+2])+1;
ans=max(ans,f1[i][j]);
}
}
}
for(int i=1;i<=n-1;++i){
for(int j=4;j<=(n-i)*2+1;j+=2){
if(f2[i][j]&&f2[i+1][j-1]){
f2[i][j]=min(f2[i+1][j],f2[i+1][j-2])+1;
ans=max(ans,f2[i][j]);
}
}
}
}
cout<<ans*ans;
[TK] 三角蛋糕 hzoi-tg#261的更多相关文章
- 高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯
高斯消元求解异或方程组: 比较不错的一篇文章:http://blog.sina.com.cn/s/blog_51cea4040100g7hl.html cojs.tk 539. 牛棚的灯 ★★☆ ...
- 使用mybatis-generator插件结合tk.mybatis自动生成mapper
本篇文章将介绍使用spring boot框架,引入mybatis-generator插件,结合tk.mybatis自动生成Mapper和Entity的一整套流程,其中包括最重要的踩坑与填坑. ...
- 利用CSS中的:after、: before制作的边三角提示框
小颖昨天分享了一篇参考bootstrap中的popover.js的css画消息弹框今天给大家再分享一篇使用:before和:after伪元素画消息弹框的CSS. 画出来是介个酱紫的: 有没有觉得画的萌 ...
- Guass列选主元消去法和三角分解法
最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...
- import matplolib 时出现"This probably means that tk wasn't installed properly."的解决方法
最近又添了一台新电脑,配置好各个依赖环境后想用matplotlib画个图,结果报出下面的错误 根据报错分析,应该是C:/Python27/tcl/tk8.5/tk.tcl这个文件出问题了,根据图中的信 ...
- 如何把select默认的小三角替换成自己的图片
不同的浏览器默认的select的选项图标是不同的,例如: 在chrome中,是这样的: 未点击时 点击时 在Firefox中是这样的: 未点击时 点击时 在IE9中是这样的: 未点击时 ...
- [LeetCode] Pascal's Triangle II 杨辉三角之二
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- [LeetCode] Pascal's Triangle 杨辉三角
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- CSS实现小三角小技巧
<style> .box{ width: 20px; height: 20px; background-color: #424; border: 10px solid #9C27B0; b ...
- 输出 n=6 的三角数字阵(JAVA基础回顾)
package itcast.feng; import java.util.Scanner; //需求:输出 n=6 的三角数字阵 //1 //2 3 //4 5 6 //7 8 9 10 //11 ...
随机推荐
- C# RSA非对称加密、解密及格式转换
前言 本文主要介绍如何使用.Net自带API结合BouncyCastle类库实现RSA加密和解密,密钥生成和密钥格式转换. 一.RSA介绍 RSA加密算法是1977年由Ron Rivest.Adi S ...
- 搭建php环境
nginx安装在宿主机上 db: 正式采用阿里云rds 测试使用docker安装 注意:报错一般都是需要配置国内镜像源,看之前的配置记录. 除了关闭防火墙,还要设置这个(本地开发环境) 永久关闭 SE ...
- 基于MybatisPlus的简单分页查询和条件分页查询
分页查询 分析: 分析文档要求 查看前端传递给后台的参数 分析参数进行编码 后台返回给前端的数据 思路 浏览器 - > Controller层 - > Service层 - > Ma ...
- 使用浪潮AI计算平台之分布式计算(Tensorflow框架下 PS/Worker模式下的异步计算)
虽然Tensorflow一直都是支持分布式计算的,但是由于只有一台电脑,一个GPU,所以别说分布式的tensorflow的使用了,就是单机多卡都是没有使用过的,由于后来可以有机会使用这个浪潮的AI计算 ...
- (续) python 中 ctypes 的使用尝试
内容接前文: https://www.cnblogs.com/devilmaycry812839668/p/15032493.html ================================ ...
- 神奇的发现——所有的aarch64架构的CPU平台下的深度学习框架均不原生支持CUDA
一个记录: 神奇的发型--所有的aarch64架构的CPU平台下的深度学习框架均不原生支持CUDA 不论是mindspore.pytorch.TensorFlow框架只要是aarch64架构的CPU下 ...
- int128输入输出流
using i128 = __int128; istream &operator>>(istream &is, i128 &x) { string s; is &g ...
- 流体饱和多孔介质的本构关系 + Föppl-von Kármán 方程
向有液体的多孔介质上施加应力,应力一部分分布到骨架上,一部分分布到孔隙流体上.骨架上的应力会导致变形,所以被称为 "有效应力".这里考虑拉伸应力为正,有效应力原理写为 \[\sig ...
- P10884 [COCI 2017-2018#2] San
题目传送门:P10884 [COCI 2017-2018#2] San 看下标签 COCI(克罗地亚) 2017 啊 比我小4年的题 --------------------------------- ...
- Adobe Photoshop cc2022 Mac中文破解版下载安装
PS2024 for Mac,我这个版本是Mac版25.2,大小4.03G,支持intel/M1/M2/M3芯片,最低系统需求:13.4以上,不限速下载地址还是放在最后. 然后安装总共有三个步骤,尤其 ...