[CTSC2002] 颁奖典礼

0.我为什么要写这篇博客

因为我太菜了,网上其他的有关于这道题的博客全都看不懂
而且写博客的人都比较巨,比如说 k a i s e r kaiser kaiser神仙(orz您)
后来我在 a k i o i akioi akioi g j m gjm gjm的帮助下理解了这道题(IOI选手果然是轻松切掉ctsc题)

1.O(nm^4)算法

题目链接

题目大意就是给你一个 n × m n\times m n×m的01矩阵,让你求出最大的完全由0构成的 I I I字形区域的面积

这道题我们很明显可以把问题简化一下,变成处理三个矩形,那么状态我们就设计出来了
f [ i ] [ j ] [ k ] [ l ] ( l = 1 , 2 , 3 ) f[i][j][k][l](l=1,2,3) f[i][j][k][l](l=1,2,3)表示我们现在取第 i i i行的 [ j , k ] [j,k] [j,k]这一段,作为第 l l l个矩形的一部分
为了判断这一段是不是全是0,我们可以开一个数组 s u m [ i ] [ j ] sum[i][j] sum[i][j]表示第 i i i行,前 j j j个数的和

那么转移就差不多是这个样子的
f [ i ] [ j ] [ k ] [ l ] = m a x { f [ i − 1 ] [ j ] [ k ] [ l ] , f [ i − 1 ] [ x ] [ y ] [ l − 1 ] } + k − j + 1 ( s u m [ i ] [ k ] = s u m [ i ] [ j − 1 ] ) f[i][j][k][l]=max\{ f[i-1][j][k][l],f[i-1][x][y][l-1]\}+k-j+1(sum[i][k]=sum[i][j-1]) f[i][j][k][l]=max{ f[i1][j][k][l],f[i1][x][y][l1]}+kj+1(sum[i][k]=sum[i][j1])
就是说,在第 i i i层这个区间的状态,可以通过上一层的继承过来,也可以通过上一个矩形的一个区间继承过来,这个区间需要满足相应的条件(我们下面说),在加上这一区间的长度,因为我们每次只扩展一行

这样的话我们会得到一个 O ( n m 4 ) O(nm^4) O(nm4)的算法,但是 n ≤ 200 n\leq200 n200我们至少要把他优化到 O ( n m 2 l o g ) O(nm^2log) O(nm2log)级别(当然这道题很明显不带 l o g log log

2.O(nm^2)算法

2.1 g数组

这里我们看一下, I I I是一个什么样的结构,比如说我们设这3个矩形的左右端点分别是 [ l 1 , r 1 ] [l_1,r_1] [l1,r1], [ l 2 , r 2 ] [l_2,r_2] [l2,r2], [ l 3 , r 3 ] [l_3,r_3] [l3,r3](高度我们先不管他)
那么,为了满足 I I I字形的条件,中间那个矩形要比两边的都要窄,也就是说
l 1 < l 2 ≤ r 2 < r 1 , l 3 < l 2 ≤ r 2 < r 3 l_1<l_2\leq r_2<r_1,l_3<l_2\leq r_2<r_3 l<

根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值