NKOJ 3253 (CQOI 2015) 标识设计(状压DP)

3253【CQOI2015】标识设计

问题描述

一家名字缩写为LLL的公司正在设计logo,他们的初步方案是在一张方格上放置3个L形的图案以及一些额外的装饰性图形。例如:

这里写图片描述(灰色区域表示装饰性图形)

3个L图案和装饰性图形均放置在方格之中,且必须占满方格。"L"的横竖笔画长短均可,但长度必须大于0(即不能退化为一条线段)。另外,为了使L图案醒目且容易辨别,设计师规定3个L形图案之间不能有重叠或交叉的部分。当然,L形图案也不能穿过装饰图形或与之重叠。
 现在设计师已经确定了所有装饰性图形的位置,希望你计算一下放置不同的L形图案总共可以设计出多少个logo。

输入格式

    输入文件第一行包含两个空格分开的正整数n和m,分别表示方格的行数和列数。
    接下来n行,每行m个字符,为"."或"#"。"#"表示该方格为装饰性图形,"."表示可以放置L图案的空白区域。

输出格式

    输出一个整数,为可能的logo总数。

样例输入

4 4
....
#...
....
..#.

样例输出

4

提示

样例解释:

这里写图片描述

    满足要求的logo只有这4种。注意,颜色只是为了便于说明,不影响方案数,因为在实际的logo中3个L图案将使用相同的色彩、纹理和光泽。

数据范围:
    对于30%的数据,n,m≤5。
    对于100%的数据,2≤n,m≤30。

首先,根据题意很容易想到利用DP来求解,那么问题在于如何确定状态。
我们可以将这三个“L”型的标记看成三条路径,然后问题就变成求三条互不相交的“L”型的路径。
观察“L”的特点我们发现,相当于是我在拓展这条路的时候只能向下或向右走,于是我们可以列出如下状态:
F[x][y][re][s][ty]
我们来解释一下这个状态,他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值