题意:

给N个怪,M个关系。

每个关系代表a和b是邻居。

然后问每次攻击你可以攻击一个怪以及它的全部邻居

问最少需要几次攻击能把怪全部杀死。

思路:

怪为行和列,然后对面每个怪的邻居都是这个怪的列建图。

也是比较裸的重复覆盖。

代码:

#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
#include"map"
#include"vector"
#define mod 1000000007
#define ll long long
using namespace std;
#define N 1010*100
#define RN 1010
#define CN 1010
struct DLX
{int n,m,C;int U[N],D[N],L[N],R[N],Row[N],Col[N];int H[RN],S[CN],cnt,ans[RN];void init(int _n,int _m){n=_n;m=_m;for(int i=0; i<=m; i++){S[i]=0;U[i]=D[i]=i;L[i]=(i==0?m:i-1);R[i]=(i==m?0:i+1);}C=m;for(int i=1; i<=n; i++) H[i]=-1;}void link(int x,int y){C++;Row[C]=x;Col[C]=y;S[y]++;U[C]=U[y];D[C]=y;D[U[y]]=C;U[y]=C;if(H[x]==-1) H[x]=L[C]=R[C]=C;else{L[C]=L[H[x]];R[C]=H[x];R[L[H[x]]]=C;L[H[x]]=C;}}void del(int x){for(int i=D[x]; i!=x; i=D[i]){R[L[i]]=R[i];L[R[i]]=L[i];}}void rec(int x){for(int i=U[x]; i!=x; i=U[i]){R[L[i]]=i;L[R[i]]=i;}}int used[CN];int h(){int sum=0;for(int i=R[0]; i!=0; i=R[i]) used[i]=0;for(int i=R[0]; i!=0; i=R[i]){if(used[i]==0){sum++;used[i]=1;for(int j=D[i]; j!=i; j=D[j]) for(int k=R[j]; k!=j; k=R[k]) used[Col[k]]=1;}}return sum;}void dance(int x){if(x+h()>=cnt) return ;if(R[0]==0){cnt=min(cnt,x);return ;}int now=R[0];for(int i=R[0]; i!=0; i=R[i]){if(S[i]<S[now])now=i;}for(int i=D[now]; i!=now; i=D[i]){del(i);for(int j=R[i]; j!=i; j=R[j]) del(j);dance(x+1);for(int j=L[i]; j!=i; j=L[j]) rec(j);rec(i);}return ;}
} dlx;
int main()
{int n,m;while(scanf("%d%d",&n,&m)!=-1){int mp[88][88];memset(mp,0,sizeof(mp));while(m--){int a,b;scanf("%d%d",&a,&b);mp[a][b]=1;mp[b][a]=1;}dlx.init(n,n);for(int i=1;i<=n;i++){dlx.link(i,i);for(int j=1;j<=n;j++){if(mp[i][j]==1) dlx.link(i,j);}}dlx.cnt=999;dlx.dance(0);printf("%d\n",dlx.cnt);}return 0;
}

[DLX重复覆盖] hdu 3498 whosyourdaddy相关推荐

  1. HDU 3498 whosyourdaddy DLX重复覆盖

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=3498 题意: 有 n n个敌人,其中有mm对敌人互为邻居,当你攻击杀死一个敌人时,同时会杀死它所有的邻居 ...

  2. HDU 3498 whosyourdaddy(Dancing_Links重复覆盖)

    题目地址 题意:给你n个城市,m条道路,每次摧毁一个城市会附带把与它直接连接的城市的摧毁,一个城市可以重复摧毁(如果不能重复就是精确覆盖了),问你最少摧毁多少个城市能把所有城市摧毁. 思路:我们可以构 ...

  3. hdu 2295 Radar DLX 重复覆盖问题

    http://acm.hdu.edu.cn/showproblem.php?pid=229 题意: 一个国家有n个城市,m个雷达,我们同时操作的雷达数最多为k,给出城市与国家的坐标,求小于等于k的操作 ...

  4. hdu - 3498 - whosyourdaddy(重复覆盖DLX)

    题意:N(2 ≤ N ≤ 55)个点,M(0 ≤ M ≤ N*N)条无向边,删除一个点会把与其相邻的点一起删掉,问最少删几次可以删掉所有点. 题目链接:http://acm.hdu.edu.cn/sh ...

  5. HDU 3498 whosyourdaddy(DLX重复覆盖)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3498         n个点,m条无向边,删除一个点会把与其相邻的点一起删掉,问最少删几次可以删掉所有 ...

  6. hdu 3498 whosyourdaddy

    Dancing Links 重复覆盖问题~ 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3498 这两天学习了Dancing Links  ,它主要 ...

  7. [DLX反复覆盖] hdu 2828 Lamp

    题意: 有N个灯M个开关 每一个灯的ON和OFF状态都能控制一个灯是否亮 给出N行,代表对于每一个灯 哪些开关的哪个状态能够使得第i个灯亮 思路: 这里须要注意一个问题 假设开关1的ON 状态和开关2 ...

  8. hdu 3498 whosyourdaddy (重复覆盖,DLX+迭代加深A*)

    题意:有一个英雄,他有一个技能,可以使一个点和与他相邻的点受到伤害,问最少攻击几个点可以使所有点至少被伤害一次. 思路:DLX.很裸.设行为每一个点,列为攻击点,在这里行元素与列元素都为n.然后DLX ...

  9. hdu - 3498 - whosyourdaddy(反复覆盖DLX)

    题意:N(2 ≤ N ≤ 55)个点,M(0 ≤ M ≤ N*N)条无向边,删除一个点会把与其相邻的点一起删掉.问最少删几次能够删掉全部点. 题目链接:http://acm.hdu.edu.cn/sh ...

最新文章

  1. 图灵5周年系列活动之“有奖DEBUG”
  2. Function、Object、Prototype 之间的关系解析
  3. 【Web应用-FTP】FTP 容量显示说明
  4. java简单的事务处理_JAVA之JDBC简单事务处理
  5. 【QT源码】系列01
  6. windows oracle增量备份脚本,oracle 增量备份脚本
  7. OC中类别、扩展、协议与托付
  8. [ios]object-c math.h里的数学计算公式介绍
  9. 马哥Linux命令大全
  10. freeradius mysql ad_freeradiusmysql简单配置一例
  11. python与或非运算规则_Python逻辑运算符之与或非
  12. 短视频直播平台系统app开发搭建方案,助力企业搭建细分领域短视频app,开发多种短视频变现模式
  13. 被遗忘的艺术:图的思维方式
  14. 软件测试工程师发展前景好吗?
  15. HTML文件标签和文本标签
  16. maven命令行下载依赖
  17. termux python3-dev_termux进阶
  18. SpringCloud-Gateway配置及持久化、过滤器、异常处理
  19. 机械工业c语言教程pdf,新编C语言程序计教程(机械工业出版社 钱雪忠 吕莹楠).doc...
  20. 基于OHCI的USB主机 —— UFI命令 USB Mass Storage Class Bulk-Only Transport协议介绍

热门文章

  1. 2006年9大必死流氓网站
  2. 利用Messenger跨进程通信
  3. 中国城市交通自动控制起源 | 7386工程背后的故事
  4. 关于暗通道先验去雾问题的小结
  5. Nature:刘清华团队揭示调控睡眠时间的关键分子通路
  6. Arthas, My Son
  7. 01-系统安装-acer台式机使用固态盘重装系统后无法进入BOOT
  8. 大数据之任务清洗编写HiveSQL代码对数据进行抽取或转换
  9. C++学习(二零七)Tegra
  10. stm32开发板下esp8266通信