舞蹈链(DLX)学习笔记
用途:解决精确覆盖问题(某一列含有恰好1个1)
洛谷模板题
超详细的算法图解
实际上并不难,就是 暴搜 + 十字链表维护。
把所有的1拿出来建十字链表,枚举每一列被哪一行覆盖,然后去掉跟这一列以及这一行有关的1,递归求解。
每个点记录6个值,l,r,u,d,col,rowl,r,u,d,col,rowl,r,u,d,col,row,分别表示左/右/上/下的点,以及它所在的行和列。循环链接。
额外需要一个头 headheadhead,一排点表示列的代表点 cic_ici,第 iii 列被覆盖就把 cic_i
原创
2020-06-16 10:41:59 ·
266 阅读 ·
0 评论