bzoj 5051: [Lydsy1709月赛]填字游戏

链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5051

本来挺简单的一个题,看漏了个条件,然后弄了半天不会做
然后和save_code讨论了一下,得出结论,都看漏条件了。。
在讨论里面可以看到,他是干脆没判就过了23333
然后下午就再GG中度过了
这种错误怎么一犯再犯呢。。
这可不行啊

来口胡一下做法吧,至于实现可能在晚点弄 (大概率咕了)

且上下边界的字符集与左右边界的字符集交集为空集。

这个条件非常重要,就是看漏了这个条件,然后就凉了
就因为这个条件,每一列/行的两个字母是没有用的,只需要看一下是不是一样的,不一样最后乘 2 2 2就好了
然后不一样就可以变成覆盖某个格子是用行还是列,只要这个不一样就行了!
因为行和列永远不会冲突

有两个做法
可以直接爆搜,然后网络流剪枝,如果填到这个状态以后填不下去看就直接返回
也可以状压DP
f i , j , k , l f_{i,j,k,l} fi,j,k,l表示处理到 ( i , j ) (i,j) (i,j)这个格子
然后每一列的状态是 k k k,这一行还有 l l l个格子没用
其中 k k k是一个 3 3 3进制的状态,表示这一列还有0/1/2个格子没有用
至于 l l l,也是 0 , 1 , 2 0,1,2 0,1,2,同样的意思
按格子转移即可
时间复杂度算出来有点大。。但是时限也比较宽松

然后就没什么了。。

如果没有这个条件的话,状态数就没这么少了,并且容易DP出很多重复的情况,就会GG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值