#LQ1046. 斗鱼养殖场

斗鱼养殖场

题目描述:

聪聪用钢丝网建造了一批同样大小的正方体网箱,将它们拼成了M×NM×N的矩形网格(每个格子都是一个网箱)放在池塘里,专门用来养殖一种凶猛的斗鱼。斗鱼天生好斗,只要旁边有其它斗鱼靠近,哪怕隔着钢丝网,它们都能斗个你死我活,所以每个网箱里最多只能饲养一条斗鱼;而且,两条斗鱼必须在不相邻的网箱(竖直或水平方向)。 另外,聪聪在某些网箱里还安装了养殖设备,这些网箱里也不能养斗鱼。 聪聪想知道,这组网箱一共有多少种可行的饲养方案(至少养一条斗鱼)由于方案数量比较大,所以只需要求出方案数量对100000007的取模结果。 例如: MM = 2,NN = 2,矩形网格的格局如图所示(蓝色为水,灰色为设备):
image

  • 饲养1条鱼的方案有3种 (3个蓝色网箱都可以养鱼);

  • 饲养2条鱼的方案有1种(用左上角和右下角的蓝色网箱养鱼) ; 这个2×22×2的矩形网格有4种饲养方案,4对100000007取模的结果是4,故输出4。

    输入描述

    第一行输入两个正整数MNM和N,分别表示矩形网格的行数和列数,两个正整数之间以一个空格隔开。 第二行开始输入MM行,每行NN个整数(只能是1或0),1表示水,0表示设备,整数之间以一个空格隔开

    输出描述:

    输出一个整数,表示至少养1条斗鱼的饲养方案数量对100000007取模的结果。

    2 2
    1 1 
    0 1
    
    4
    

提示

2M1002 \leq M \leq 100
2N10 2 \leq N \leq 10