随笔分类 -  数据结构——DLX

摘要:http://acm.fzu.edu.cn/problem.php?pid=1686题意:给定一个n*m的01矩阵,给出每次可以覆盖的行与列(相当于利用小矩形覆盖大矩形一样),求使用最少的次数(小矩形的个数)将所有的1都覆盖。思路:这里没有要求不能重复覆盖,所以属于重复覆盖的类型。只要把所有出现的1当作列,然后枚举每个可能的小矩形,枚举他所能覆盖的列,建立十字链标。然后套用DLX 重复覆盖模板即可。吐槽一下:这里h()函数减枝时如果是> 就会tle >= 就AC 了。。。无语了,看来等于的结果很多啊。心得:做了几个DLX的题目,感觉这类题目和网络流类似,只要能把模型想出来,建好图, 阅读全文
posted @ 2012-10-30 17:18 E_star 阅读(286) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=229题意:一个国家有n个城市,m个雷达,我们同时操作的雷达数最多为k,给出城市与国家的坐标,求小于等于k的操作下,雷达覆盖的能够覆盖所有城市的最小覆盖半径。思路:城市作为列,雷达作为行,二分枚举雷达的半径+DLX重复覆盖求解。View Code #include <cstdio>#include <cstring>#include <iostream>#include <cmath>using namespace std;// freopen("dat 阅读全文
posted @ 2012-10-29 23:20 E_star 阅读(186) 评论(0) 推荐(0) 编辑
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3372题意:给你一个n*m的大矩形,然后给你p个小矩形,让你从中选出若干小矩形填满这个大矩形,这里保证所选的小矩形不存在相互覆盖。思路:才开始看到大牛的dlx分类里面看了之后,没什么想法,可能就做了一个题的原因把。说是把整个大矩形的面积看n*m的作列,每个小矩形看作行,然后拆出他所能覆盖的列然后问题就转化成了DLX问题了。吐槽以下,这题我交了34遍啊。才开始自己想到了怎么写了就写了一下,中间出现各种错误, i : x1 到 x2 - 1 j: y1 + 1 到 y2 转化为本 阅读全文
posted @ 2012-10-29 18:42 E_star 阅读(305) 评论(0) 推荐(0) 编辑
摘要:http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=10702题意:给你一个n*m的01矩阵,让你选择若干行使这些行中的1能够覆盖所有的列,而且不能出现重复覆盖。输出所选的行。思路:这是跳舞链的模板题目。不多说了。给出个人觉得讲解比较好的链接:http://blog.csdn.net/mu399/article/details/7627736参考代码:http://blog.csdn.net/dooder_daodao/article/details/6654904我的代码:View Code #include < 阅读全文
posted @ 2012-10-28 17:58 E_star 阅读(315) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示