![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Dancing Link
文章平均质量分 81
enmity_dark
这个作者很懒,什么都没留下…
展开
-
[DLX重复覆盖] hdu 3656 Fire station
题意: N个点,再点上建M个消防站。 问消防站到每个点的最大距离的最小是多少。 思路: DLX直接二分判断TLE了。 这时候一个很巧妙的思路 我们求的距离一定是两个点之间的距离 因此我们把距离都求一遍排序一下。 然后用下标二分 这样就AC了。 代码: #include"stdio.h" #include"algorithm" #include"string.h" #inclu原创 2015-07-21 10:24:25 · 604 阅读 · 0 评论 -
[DLX精确覆盖+打表] hdu 2518 Dominoes
题意: 就是给12种图形,旋转,翻折,有多少种方法构成n*m=60的矩形 思路: 裸的精确覆盖,就是建图麻烦 个人太挫,直接手写每个图形的各种形态 需要注意的是最后的答案需要除以4 代码: #include"stdio.h" #include"algorithm" #include"string.h" #include"iostream" #include"queue" #inclu原创 2015-07-22 19:22:53 · 671 阅读 · 0 评论 -
[DLX精确覆盖] hdu 1603 A Puzzling Problem
题意: 给你n块碎片,这些碎片不能旋转、翻折。 问你能不能用其中的某些块拼出4*4的正方形。 思路: 精确覆盖裸题了 建图就是看看每个碎片在4*4中能放哪些位置,这个就作为行。 列就是4*4=16个位置再加上n个碎片也就是16+n 然后注意下成立的判定就好了 代码: #include"stdio.h" #include"algorithm" #include"string.h"原创 2015-07-22 13:33:11 · 615 阅读 · 0 评论 -
[DLX重复覆盖] hdu 2828 Lamp
题意: 有N个灯M个开关 每个灯的ON和OFF状态都能控制一个灯是否亮 给出N行,代表对于每个灯 哪些开关的哪个状态可以使得第i个灯亮 思路: 这里需要注意一个问题 如果开关1的ON 状态和开关2的ON状态能使得1号灯亮 那么开关1、2同时处于ON的时候 1号灯也是亮的。意思就是只要有一个开关使得灯亮,灯就亮了。 简单的DLX 重复覆盖 行为每个开关的两个状态2*m行,列为n原创 2015-07-22 11:38:42 · 652 阅读 · 0 评论 -
[DLX精确覆盖] hdu 4210 Su-domino-ku
题意: 首先给你N块板(2*1或1*2)的,数字以及位置 再给你9个单个的板,1~9,分别的位置 然后问你如何放其他板(1*2或2*1)使得成为数独 注意的是对于板子来说,含有的数字是唯一的 也就是含有数字1和2的板有且只有1块 思路: 感觉自己太挫的,写了超级麻烦的建图 列是5*9*9的 前面的4*9*9就和普通的数独一样 后面的9*9是代表放的板的数字 就是对于(i,j)这原创 2015-07-22 15:54:56 · 911 阅读 · 0 评论 -
[DLX精确覆盖] hdu 3663 Power Stations
题意: 给你n、m、d,代表有n个城市,m条城市之间的关系,每个城市要在日后d天内都有电。 对于每个城市,都有一个发电站,每个发电站可以在[a,b]的每一个连续子区间内发电。 x城市发电了,他相邻的城市也有电,并且每个发电站只能启动一次,或者不启动。 现在问,如何安排发电站的启动,保证每个城市d天都有电。 输出发电方案,不发电的话输出0 0 思路: 一个简单的精确覆盖问题,就是建图比原创 2015-07-22 09:22:48 · 631 阅读 · 0 评论 -
[DLX重复覆盖] hdu 3957 Street Fighter
题意: 每组数据输入有几个人,每个人有至多两种模式。 每个人你选择的话只能选择一个人并且一种模式。 但是要打败剩下所有人的所有模式。 问最少要选几次。 思路: 以每个人的每个模式编号为行和列。 然后需要记录一下,因为一个人的一个模式如果被选了 那么这个人的另一个模式也不能选了。 然后dance的时候判断一下就好了。 代码: #include"stdio.h" #include原创 2015-07-21 20:39:07 · 469 阅读 · 0 评论 -
[DLX] hust 1017 Exact cover
题意: 给你N个包,要拿到M个东西(编号1~M每个只能有一个) 然后每个包里有k个东西,每个东西都有编号。 思路: 舞蹈连模板题 代码: #include"stdio.h" #include"algorithm" #include"string.h" #include"iostream" #include"queue" #include"map" #include"vector" #i原创 2015-07-20 15:19:55 · 566 阅读 · 0 评论 -
[DLX重复覆盖] poj 1084 Square Destroyer
题意: n*n的矩形阵(n 求在已经拿走一些火柴的情况下,还需要拿走至少多少根火柴可以把所有的正方形都破坏掉。 思路: 对于每个位置遍历所有可能的边长,确定这个边长下的正方形的边对应的都是数字几,并且把正方形从1开始编号。 然后根据编号,把正方形和数字建边记录方便下面建图。 然后以火柴棍为行,正方形为列,建立dancing link 然后求解。 这里注意的是,需要强行插入某些行。原创 2015-07-20 20:41:26 · 992 阅读 · 0 评论 -
[DLX重复覆盖] hdu 3498 whosyourdaddy
题意: 给N个怪,M个关系。 每个关系代表a和b是邻居。 然后问每次攻击你可以攻击一个怪以及它的全部邻居 问最少需要几次攻击能把怪全部杀死。 思路: 怪为行和列,然后对面每个怪的邻居都是这个怪的列建图。 也是比较裸的重复覆盖。 代码: #include"cstdlib" #include"cstdio" #include"cstring" #include"cmath" #inc原创 2015-07-21 09:19:52 · 693 阅读 · 0 评论 -
[DLX+bfs] hdu 4069 Squiggly Sudoku
题意: 给你9*9的矩阵。对于每个数字,能减16代表上面有墙,能减32代表下面有墙。。。 最后剩下的数字是0代表这个位置数要求,不是0代表这个数已知了。 然后通过墙会被数字分成9块。 然后做数独,这里的数独不是分成9个3*3的小块而是通过墙分成的。 思路: 首先通过数字作出墙。 然后bfs求连通块,dfs也可以。目的是分块。 然后就是dlx数独模板题了。 这里要注意的是如果找到答原创 2015-07-20 16:19:32 · 934 阅读 · 0 评论 -
[DLX重复覆盖] hdu 3529 Bomberman - Just Search!
题意: 给你N*M的图,*是破坏不了的墙,#是需要你破坏的前,.是可以放炸弹的地方。 每个点只能放一个炸弹,同时放炸弹,炸弹是四个方向无限距离,能被墙挡住。 问你最少放多少个炸弹,能把所以#炸掉。 思路: 对每个.进行编号,以及每个#进行编号。 .为行,#为列建图。 跑DLX重复覆盖即可。 代码: #include"cstdlib" #include"cstdio" #inclu原创 2015-07-20 21:48:47 · 516 阅读 · 0 评论 -
[DLX重复覆盖] hdu 4735 Little Wish~ lyrical step~
题意: 在一棵树上有n个节点,n-1条边,每条边有距离。 每个节点会给你原来是男孩还是女孩。 问最少要交换多少次,使得每个女孩都能被保护到。 保护到的条件是女孩和最近的男孩的距离小于等于D 思路: 首先要求一下mp[i][j],就是任意两个点之间的距离 这个方法随意都可以的。 因为男孩只能放在树上,所以行为树,列也为树 这样每次求出的cnt就是每次最多要有多少个男的在指定的树上原创 2015-07-23 10:39:17 · 736 阅读 · 0 评论