Dancing links
做一只大熊猫
让优秀成为一种习惯!
展开
-
C - 神龙的难题 FZU - 1686
传送门思路 题意在一个nm的0、1矩阵中,1表示怪物,神龙的每次攻击可以消灭一个 n1m1的矩形的内的怪物,问消灭地图中的所有怪物最少需要多少次攻击? 思路DLX重复覆盖 解决问题构造数据矩阵给怪物编上编号作为列号,从1开始,把怪物当做列把神龙的攻击区域当做行,神龙的攻击区域有很多选择,但是由于数据范围小,我们直接暴力枚举 所有攻击区域,在枚举的时候也给这些当做行的区域编上编号作为行号,对于某个攻击区域(对应的行的编号为i),如果这个区域内有怪物(怪物编号为j),那么对应的数原创 2020-07-12 08:55:44 · 160 阅读 · 0 评论 -
B - Radar HDU - 2295(二分+重复覆盖)
题目传送门思路 题意n个城市,m个雷达站,从m个雷达站中选择k个使n个城市到打雷达站的最大距离最小,求出这个最大最小值 思路二分枚举答案check(int md)函数中用 “DLX重复覆盖”来暴力枚举选择k个城市看在二分枚举的距离为md 的情况下能否覆盖所有城市(可以重复覆盖)对与构造DLX重复覆盖所需要的 数据矩阵 行表示 m个雷达章,列表示n个将被覆盖的城市。行和列的交点元素为1,如果在md距离下行所代表的雷达站能够覆盖列所代表的城市;否则交点元素为0详细分析传送门代码原创 2020-07-12 08:37:33 · 354 阅读 · 0 评论 -
A - Treasure Map ZOJ - 3209(DLX精确覆盖)
A - Treasure Map ZOJ - 3209思路 题意给我们一个 大矩形,这个矩形的左下角为(0,0),右上角坐标为(n,m)现在又给我们k个小矩形,它左下角坐标为(x1,y1),右上角为(x2,y2),现在我们要用这个k个小矩形的中的一些,来拼凑出的完整的大矩形,注意:拼凑的大矩形不能有重叠部分 分析这个 既然要用 DLX来解决重复覆盖问题,我们先弄明白精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1首先我们考虑原创 2020-07-11 23:18:41 · 223 阅读 · 0 评论 -
Dancing links 模板
Dancing links 模板知识点传送门 用途:精确覆盖问题:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1代码#include<iostream> #include<algorithm>#include<cstring>#include<queue>#include<map>#include<string>#include<cstdio>#include原创 2020-07-07 19:50:30 · 213 阅读 · 1 评论