AT 杂题选做

AtCoder Regular Contest 081

难度正常的一场 ARC。

A 题感觉有点眼熟,但是不管了,反正是可以秒掉的题。

B 题:
难度:2.0
难在第一步的观察(当然可能非常套路)
由于是 2 × n 2\times n 2×n 的网格,所以不难推出,形状一定是多个竖着的骨牌,然后多个横着的骨牌,然后又是竖着的骨牌…

所以就直接排列组合乱搞竖着横着然后从左往右搞就好了。

C 题:
难度:2.9
惨遭这题误导

结果就是想了一年的子序列个数还是不会。。

康了康题解草了我第一印象又是对的,居然真的是打牌,只不过我没有想到从后往前,我果然是个伞兵。

话说这玩意居然叫子序列自动机(

D 题:
难度:3.1
有点困难(

首先考虑最简单的情况,一个 2 × 2 2\times 2 2×2 的矩阵能够被统一成全 1 1 1 的充分必要条件事神魔?一共只有 2 4 2^4 24 中情况,枚举可得这个矩阵中恰好有偶数个 1 1 1

进一步有一个结论,即一个大矩阵能全 1 1 1 当且仅当它所有 2 × 2 2\times 2 2×2 的矩阵均可以变成全 1 1 1

所以原问题转化为对于每个合法 2 × 2 2\times 2 2×2 矩阵标记一下,求最大全 1 1 1 矩阵。

方法1:把矩阵中的0用一个很大的负数来替代,这样就转化为“最大子矩阵和问题”

几万年后的 UPD:学校比赛考了这题,(大抵)切了。但是忘记了特判 m a x ( n , m ) max(n,m) max(n,m)

现在再来重新写一遍这题做法。

结论:一个矩阵能全部成为黑色,当且仅当它的每个 2 × 2 2\times 2 2×2 的子矩阵都合法。

首先必要性很好证明。

充分性:当把这个矩阵第一行变成全黑的时候,由于此时所有 2 × 2 2\times2 2×2 矩阵依然合法。所以之后的每一行要么全黑要么全白。

所以就把每个 2 × 2 2\times 2 2×2 的矩阵标记一下,求最大全 1 1 1 矩阵。

枚举每一行,预处理向下有几个 1 1 1 ,变成了广告覆盖问题,使用单调栈可以做到 O ( n m ) O(nm) O(nm)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值