题目大意:
给出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]的前缀和