【POJ1084】Square Destroyer 重复覆盖问题 DLX(Dancing Links)

    首先给一个传送门,是我写的精确覆盖问题,也是DLX。

    http://blog.csdn.net/vmurder/article/details/40586647

    然后再给一个传送门,是这道题的POJ位置。

    http://poj.org/problem?id=1084

    然后开始说正事。

题意:

    多组数据,第一个数是数据个数。

    题意就是给出一个n*n的大网格,然后它由一系列的火柴拼成,题中给的图片是第二组测试数据。

    现在我们已经删掉了若干个火柴,问至少还需要删掉多少火柴,才能使图中的若干个正方形全部被破坏。

解析:

    每个正方形都需要有其上的至少一根火柴被选,那么就转化成了DLX模型。每行是一跟火柴,每列是一个正方形,当然正方形个数是<=5*5+4*4+3*3+2*2+1*1=55的,然后显然若某行这根火柴在某列的正方形中,则new一个节点。这样就可以直接套DLX模版(重复覆盖的模版)求解了。

题解:

    跟简单覆盖基本一样,但是深刻理解一下就可以知道,简单覆盖时删除操作是先删列,然后枚举行,跟行有关的列也删掉,每深一层都是经过两次(好吧,你说是一次+for(若干次)我也同意)删除操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值