ABC 311

前四题过水

E

枚举正方形的上边界所在行。对于第 i 行一个没洞的位置 (i,j),我们尝试求出以它为右上角的无洞正方形个数。

结论:设以 (i,j1) 为右上角的无洞正方形边长最大为 len,那以 (i,j) 为右上角的无洞正方形边长最大为 len+1

(i,j) 为右上角的边长为 len+2 的无洞正方形包含了以 (i,j1) 为右上角的边长为 len+1 的无洞正方形,矛盾。

而以 (i,j) 为右上角边长能为 len+1 的充要条件是:

  1. (i,j) 往下 len+1 个格子都无洞;

  2. (i,j+len) 往左 len+1 个格子都无洞。

预先记录 lft[i][j],dwn[i][j] 表示从 (i,j) 往左/下第一次碰到洞是什么地方。O(n2) 预处理。

另外,如果 (i,j) 不能达到 len+1,那边长最大为 dwn[i][j]i+1.

然后可以扫一遍行,每行找所有无洞的位置,每个位置 ans+= 这个位置右上角的最大边长。

O(n2)

(官方发的题解貌似是 dp,dp[i][j] 表示以 (i,j) 为右下角的无洞正方形个数)

F

有一个矩阵,一些格子已经被染成黑色。你可以把剩下的格子任意选一些染成黑色。有多少种染色方案使得每个黑格 (i,j)(i+1,j)(i+1,j+1) 都是黑格?

dp[i][j] 表示前 i 列,第 i 列最高黑格位置是第 j 行的方案数。

容易发现 dp[i1][j+2n] 不能转移到 dp[i][j],其他 dp[i1][] 都可以。

同时注意 dp[i][j]ji 列的最高黑格高度。

然后就是正常转移,加上前缀和优化

G

找出矩形使得(矩阵和 × 矩阵最小值)最大。

直接暴力枚举最小值,然后使用悬线法

posted @   FLY_lai  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示