传送门:【HDU】3498 whosyourdaddy

题目分析:重复覆盖入门题。

重复覆盖相对于精确覆盖有些地方不同,精确覆盖每次可以删除多行多列,但是重复覆盖每次只能删除一行多列,而且还需要可行性剪枝才能跑的稍微快一点。

代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;#define REP( i , a , b ) for ( int i = a ; i < b ; ++ i )
#define REV( i , a , b ) for ( int i = a - 1 ; i >= b ; -- i )
#define FOR( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define FOV( i , a , b ) for ( int i = a ; i >= b ; -- i )
#define CLR( a , x ) memset ( a , x , sizeof a )
#define REC( i , A , o ) for ( int i = A[o] ; i != o ; i = A[i] )const int MAXR = 60 ;
const int MAXC = 60 ;
const int MAXNODE = 4000 ;
const int INF = 0x3f3f3f3f ;struct DLX {int U[MAXNODE] , D[MAXNODE] , L[MAXNODE] , R[MAXNODE] ;int row[MAXNODE] , col[MAXNODE] ;int S[MAXC] , H[MAXR] ;int vis[MAXC] ;int n , m ;int deep ;int size ;int G[MAXR][MAXC] ;void init () {CLR ( H , -1 ) ;FOR ( i , 0 , n ) {S[i] = 0 ;U[i] = i ;D[i] = i ;L[i] = i - 1 ;R[i] = i + 1 ;}L[0] = n ;R[n] = 0 ;size = n ;deep = INF ;}void link ( int r , int c ) {++ size ;++ S[c] ;row[size] = r ;col[size] = c ;U[size] = U[c] ;D[size] = c ;D[U[c]] = size ;U[c] = size ;if ( ~H[r] ) {L[size] = L[H[r]] ;R[size] = H[r] ;L[R[size]] = size ;R[L[size]] = size ;}elseH[r] = L[size] = R[size] = size ;}void remove ( int c ) {REC ( i , D , c ) {L[R[i]] = L[i] ;R[L[i]] = R[i] ;}}void resume ( int c ) {REC ( i , U , c ) {R[L[i]] = i ;L[R[i]] = i ;}}int h () {int cnt = 0 ;CLR ( vis , 0 ) ;REC ( i , R , 0 )if ( !vis[i] ) {++ cnt ;vis[i] = 1 ;REC ( j , D , i )REC ( k , R , j )vis[col[k]] = 1 ;}return cnt ;}void dance ( int d ) {if ( d + h () >= deep )return ;if ( R[0] == 0 ) {deep = min ( deep , d ) ;return ;}int c = R[0] ;REC ( i , R , 0 )if ( S[c] > S[i] )c = i ;REC ( i , D , c ) {remove ( i ) ;REC ( j , R , i )remove ( j ) ;dance ( d + 1 ) ;REC ( j , L , i )resume ( j ) ;resume ( i ) ;}}void solve () {int u , v ;init () ;CLR ( G , 0 ) ;REP ( i , 0 , m ) {scanf ( "%d%d" , &u , &v ) ;G[u][v] = G[v][u] = 1 ;}FOR ( i , 1 , n )FOR ( j , 1 , n )if ( G[i][j] || i == j )link ( i , j ) ;dance ( 0 ) ;printf ( "%d\n" , deep ) ;}
} dlx ;int main () {while ( ~scanf ( "%d%d" , &dlx.n , &dlx.m ) )dlx.solve () ;return 0 ;
}

【HDU】3498 whosyourdaddy 重复覆盖入门题相关推荐

  1. hdu 3498 whosyourdaddy 重复覆盖

    #include <bits/stdc++.h> using namespace std; struct DLX {const static int maxn=64,maxm=64,max ...

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

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

  3. HDU 3498 whosyourdaddy DLX重复覆盖

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

  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重复覆盖)

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

  7. [DLX重复覆盖] hdu 3498 whosyourdaddy

    题意: 给N个怪,M个关系. 每个关系代表a和b是邻居. 然后问每次攻击你可以攻击一个怪以及它的全部邻居 问最少需要几次攻击能把怪全部杀死. 思路: 怪为行和列,然后对面每个怪的邻居都是这个怪的列建图 ...

  8. HDU 4398 whosyourdaddy 精确覆盖,允许重复覆盖

    题目大意:有n个点,其中一些点是相连的.领主的攻击具有溅射,即攻击一个点,此点相邻的点也会收到攻击.问,领主最少攻击多少次,使得每个点都至少被攻击一次. 与传统精确覆盖相比,此题允许重复覆盖.那么,我 ...

  9. HDU 3498 whosyourdaddy(DLX+A*||多重覆盖)

    题意: 题意就是让你选最少的步数是的每个点至少被覆盖一次,多重覆盖模板题. 蛋疼的是,我把评估函数的辅助数组开大了,结果T的我不要不要的. 看懂只好还是比较好做的. 多重覆盖和精确覆盖的区别就是多重覆 ...

最新文章

  1. 网络硬盘与传统资源共享的不同
  2. HGST:中国将成为新云端运算大国
  3. mysql报错2_MySQL基于报错注入2
  4. 【转】supervisord使用
  5. Butter Knife:一个安卓视图注入框架
  6. 多个Series合并成Dataframe,index不完全匹配怎么处理
  7. java sqlite3查询慢_java连接数据库进行查询优化跑不通谁能帮我调下通
  8. qt设置滚动区域的滚动条的样式
  9. Window Services的调试和非托管dll的引用及其他一些注意问题
  10. 设计模式16_策略模式
  11. 强大的jQuery选择器之选定连续多行
  12. main函数之前的事(略)
  13. AS解决在导入library之后lable/icon/theme合并出现bug
  14. redhat linux查看进程cpu,Redhat Linux 查看cpu、memory 等命令
  15. antd组件英文改中文
  16. 安卓手机传感器采集数据并保存数据
  17. 什么样的投影仪好?哪款家用投影仪又好又便宜
  18. java ftp ftpClient.storeFile 服务器失败
  19. 从c++到java+android
  20. oracle 查询秒,oracle 查询N秒之前的数据

热门文章

  1. 传说中听了会自杀的歌--(Gloomy Sunday)黑色星期天
  2. 人生,应该把时间浪费在美好的事物上...
  3. 江苏省工业互联网标识创新应用案例集
  4. python文章伪原创_对国内首款伪原创工具作者泊君的访谈
  5. unity 导入动画到 laya
  6. 如何PHP给人生日祝福,女人要现实的说说 给损友的生日祝福
  7. 推荐10款GitHub中高价值的PHP项目(值得收藏)
  8. docker如何一键部署php项目教程
  9. @Data的注解以及相关的注解
  10. 盘点2017年晋升为Apache TLP的大数据相关项目