最近公司搞征文比赛,就把我以前写过过的数独算法再深入研究了一下,形成这篇小文。一共介绍了五种方法来求解数独:回溯法,排列组合法,精确覆盖问题法,模拟退火法以及约束编程法。 ...
分类:
其他好文 时间:
2016-06-25 07:24:49
阅读次数:
413
精确覆盖问题,用dancing links求解。 打常量表比较麻烦。 ...
分类:
其他好文 时间:
2016-05-15 22:52:49
阅读次数:
304
题目链接:[kuangbin带你飞]专题三 Dancing Links B - Treasure Map题意
给一矩形和k个小矩形,问选取最小数量为多少的小矩形可以对大矩形进行精确覆盖。
思路
仍然是个模版题,把二维的n*m的大矩形看作是一维的n*m的一条线。k个小矩形同理,那么就转化成01矩阵精确覆盖的问题了。
代码#include
#include <algorit...
分类:
其他好文 时间:
2016-02-21 20:01:43
阅读次数:
204
用最少的矩阵覆盖n*m的地图。注意矩阵不能互相覆盖。这里显然是一个精确覆盖,但因为矩阵拼接过程中,有公共的边,这里须要的技巧就是把矩阵的左边和以下截去一个单位。#include #include #include #include #include #include #include #includ...
分类:
其他好文 时间:
2015-12-22 09:02:02
阅读次数:
218
基本思路(Main Thoughts): Dancing link是一种十分优美的数据结构。 通常配合IDA*,二分等方法解决可以转化为精确覆盖和重复覆盖的题目。 精确覆盖:在一个01矩阵中选几行,使得这几行组合起来的矩阵每列有且只有一个1 重复覆盖:每列可以有多个1实现步骤(Implementat...
分类:
其他好文 时间:
2015-12-16 23:13:47
阅读次数:
394
跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题转:http://www.cnblogs.com/grenet/p/3145800.html精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1例如:如下的矩阵就包含了这样一个...
分类:
编程语言 时间:
2015-12-13 11:08:29
阅读次数:
284
题目链接精确覆盖的模板题, 把每一个格子当成一列就可以。S忘记初始化TLE N次, 哭晕在厕所...... 1 #include 2 using namespace std; 3 #define pb(x) push_back(x) 4 #define ll long long 5 #de...
分类:
其他好文 时间:
2015-12-10 21:42:20
阅读次数:
191
DLX。针对每个城市,每个城市可充电的区间构成一个plan。每个决策由N*D个时间及N个精确覆盖构成。 1 /* 3663 */ 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #in...
分类:
其他好文 时间:
2015-11-20 17:10:36
阅读次数:
164
一定要注意审题啊,题目说的是选出做少的英雄打败其余处在任何模式下的英雄。共有Sigma(num of model)个方案,每个方案有Sigma(num of model)+n个决策。挺不错的一道精确覆盖的题目,最近发现精确覆盖很有意思。 1 /* 3957 */ 2 #include 3 #...
分类:
其他好文 时间:
2015-11-20 00:04:38
阅读次数:
237
题意:
给出一个n*m的01矩阵,选择其中的一些行,来精确覆盖每一列;
只需要输出是否存在解即可;
n
题解:
DLX裸题,利用双向十字链表优化搜索中的回溯问题;
因为每一列上都只能有且仅有一个1,所以如果某一列上已经有了1,那么这一列上有1的其他行也可以被删除;
根据这个思想是我们有了一个很厉害的剪枝条件,但是如果直接在矩阵中删除速度太慢,要求空间太多;
所以就有了这种支...
分类:
其他好文 时间:
2015-11-11 08:51:44
阅读次数:
258