题目大意:
给出T个n*m大小的01图,1表示不合法点,求出图中c和f的个数,其中c的长度至少为1,f是c的长度+n
思路:前缀和
解法一:复杂度
处理每一行的后缀和,s[i][j]表示第i行后面j行的连续长度,其中,有
然后枚举c的两个关键点i,j,k 两点后的贡献,则答案是
,其中
,且
,在k上恒成立
f的贡献是后面行的连续0个数-1+c的个数,保证0个数不为0
解法二:优化前缀和,复杂度
同上处理后缀和,在每一列上,f是前面c凭借而成,这些c的一横与f[i][j]做乘积即可。
记和
两个值表示点
作为下面的贡献点的贡献,则有
,
,所以答案是
,
也可以推出以下柿子:,满足
恒不为0,则
,是后面0的连续个数。同时维护一个f[i][j]的前缀和
本文介绍如何利用前缀和和后缀和的方法解决给定的T个n*m大小的01图问题,寻找c和f的数量,c至少包含1个1,f是c的长度加上n。提供两种解法,一种是基本的前缀和处理,另一种是对复杂度进行优化,通过列操作计算f的贡献。

被折叠的 条评论
为什么被折叠?



