3173. 【GDOI2103模拟3.17】扫雷游戏(搜索 + 剪枝)

博客围绕类似扫雷游戏,求解至少有多少个雷的问题展开。介绍了数据约束条件,给出三种解题估价方法,包括贪心选较优的点、估价点身边数字的紧迫程度、把数字剩余数加到周边格子,还可三种方法结合取最小值。此外还提及题解的状压方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem

给出一个类似扫雷的游戏,有 n u m num num个数字,求至少有多少个雷。

Data constraint

n , m ≤ 15 , n u m ≤ 15 n,m\le 15,num\le 15 n,m15,num15

Solution
  • 好搜索啊。

  • 现讲一种自己的方法:

    显然是贪心了。就把当前局面中较优的点先选,什么是较优呢?可以看成一个估价函数,你估价一下选这个点能给多少个数字减一,越多当然越好。当然,这个估价太弱了。。。

    我们还有另外一种估价方法:估价一个点身边的数字的“紧迫程度”,即如果这个点不选,可能周边一个数字就不合法了,一个点对它周围的数字越紧迫,我们越要选。具体的,我们用 原数字 - 还剩格子数 作为一个数字的紧迫程度,累加一下。

    当然,最后讲一种极其牛逼的估价方法:把每个数字的剩余数加到它周边的格子去。(目前找不到能卡的数据。。。)

    最后,如果怕被卡,可以这三种方法一齐上,每种都卡一下时,然后取个 m i n min min,注意我们搜索的时候,如果搜到一个解,就不继续往下搜,这样不能保证答案最优,但可以保证答案很优。

  • 再说一下题解的方法:

    实质上是个状压,但我觉得很悬。。把本质相同的点缩起来,然后枚举选的个数,然后类似搜索一样做就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值