题意 : 给你一个大小为 n * m 的矩形 , 坐标是( 0 , 0 ) ~ ( n , m ) 。然后给你 p 个小矩形 , 坐标是( x1 , y1 ) ~ ( x2 , y2 ) , 你选择最小的几个矩形 , 使得这些矩形可以覆盖整个矩形 , 并且互相不会重叠 。( n , m
思路 : Dancing Links 的精确覆盖问题 。
我们将 n * m 的矩形分成 n * m ...
分类:
其他好文 时间:
2014-10-03 23:13:35
阅读次数:
340
用最少的矩阵覆盖n*m的地图,注意矩阵不能互相覆盖。
这里显然是一个精确覆盖,但由于矩阵拼接过程中,有公共的边,这里需要的技巧就是把矩阵的左边和下面截去一个单位。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using...
分类:
其他好文 时间:
2014-10-03 00:07:53
阅读次数:
217
利用 Dancing Link 来解数独
具体的可以看 lrj 的训练指南 和 《 Dancing Links 在搜索中的应用 》这篇论文
Dancing Link 来求解数独 , 是通过求解精确覆盖
精确覆盖就是给出一个 01 矩阵 , 要求我们选择一些行 , 使得每一列有且仅有一个 1
对于数独问题 , 行就是我们的选择 , 即在第 i 行 第 j 列 放上 数字...
分类:
其他好文 时间:
2014-09-30 02:38:51
阅读次数:
362
直接精确覆盖开始逐行添加超时了,换成了单点添加#include #include #include #include #include using namespace std;#define FOR(i,A,s) for(int i = A[s]; i != s; i = A[i])#define....
分类:
其他好文 时间:
2014-09-29 23:30:51
阅读次数:
214
很久以前就看到的一个经典题,一直没做,今天拿来练手。街霸给n#include #include #include #include #include #include #include #include using namespace std;#define MP make_pair#define ...
分类:
其他好文 时间:
2014-09-28 14:07:02
阅读次数:
172
题目:http://poj.org/problem?id=2676题意:数独,每行1-9,每列1-9,每3*3小格1-9,填数,不能重复方法:Dancing Links(16ms)或者DFS暴搜(400-900ms)Dancing Links(DLX) 是为了解决矩阵精确覆盖问题的算法,算法效率非常...
分类:
其他好文 时间:
2014-09-02 14:07:34
阅读次数:
225
DLX的题,做过这题才算是会吧。这道题转化成了精确覆盖模型来做,一开始,只是单纯的要覆盖完行列和斜线,WA。后来醒悟了,不能这样,只要覆盖全部行或列即可。虽然如此,但某些细节地方很关键不能考虑到。特别要注意的是for(int i=R[c];i;i=R[i]){ if(i>ne) break; if(...
分类:
其他好文 时间:
2014-08-26 21:08:46
阅读次数:
252
精确覆盖#include #include #include #include #include using namespace std;const int maxn=920;const int maxnode=920*550;const int maxr=550;int ans;struct DL...
分类:
其他好文 时间:
2014-08-26 09:44:25
阅读次数:
221
DLX算法,刚接触,是关于精确覆盖的,白书上有算法介绍。代码模板#include #include #include #include #include #include using namespace std;char puzzle[20][20];const int SLOT=0;const i...
分类:
其他好文 时间:
2014-08-25 11:19:14
阅读次数:
178
本文简单分析DancingLinks实现中的数据结构设计,给出了精确覆盖问题及其扩展问题的代码,并应用于数独问题。...
分类:
其他好文 时间:
2014-08-23 15:24:51
阅读次数:
257