博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(简单) HUST 1017 Exact cover , DLX+精确覆盖。
阅读量:4667 次
发布时间:2019-06-09

本文共 2192 字,大约阅读时间需要 7 分钟。

  Description

  There is an N*M matrix with only 0s and 1s, (1 <= N,M <= 1000). An exact cover is a selection of rows such that every column has a 1 in exactly one of the selected rows. Try to find out the selected rows.
 
  DLX精确覆盖的模板题。。。。。。
 
代码如下:
//HUST 1017#include
#include
using namespace std;// N 行 M 列 。 。 。const int INF=10e8;const int MaxN=1010;const int MaxM=1010;const int MaxNode=MaxN*MaxM; // 这个的大小可以适当减少。 。 。struct DLX{ int U[MaxNode],D[MaxNode],L[MaxNode],R[MaxNode],col[MaxNode],row[MaxNode]; //row 可以不要。 int H[MaxN],S[MaxM]; int size,n,m; int ansnum,ans[MaxN]; void init(int _n,int _m) { n=_n; m=_m; size=m; ansnum=INF; for(int i=0;i<=m;++i) { L[i]=i-1; R[i]=i+1; U[i]=D[i]=i; S[i]=0; } R[m]=0; L[0]=m; for(int i=1;i<=n;++i) H[i]=-1; } void Link(int r,int c) { col[++size]=c; ++S[c]; row[size]=r; U[size]=U[c]; D[size]=c; D[U[c]]=size; U[c]=size; if(H[r]==-1) H[r]=L[size]=R[size]=size; else { L[size]=L[H[r]]; R[size]=H[r]; R[L[H[r]]]=size; L[H[r]]=size; } } void remove(int c) { L[R[c]]=L[c]; R[L[c]]=R[c]; for(int i=D[c];i!=c;i=D[i]) for(int j=R[i];j!=i;j=R[j]) { U[D[j]]=U[j]; D[U[j]]=D[j]; --S[col[j]]; } } void resume(int c) { for(int i=U[c];i!=c;i=U[i]) for(int j=L[i];j!=i;j=L[j]) { U[D[j]]=D[U[j]]=j; ++S[col[j]]; } L[R[c]]=R[L[c]]=c; } void showans(int d) { cout<
>N>>M) { dlx.init(N,M); for(int i=1;i<=N;++i) { cin>>K; for(int j=1;j<=K;++j) { cin>>t; dlx.Link(i,t); } } if(!dlx.Dance(0)) cout<<"NO"<
View Code

 

转载于:https://www.cnblogs.com/whywhy/p/4263867.html

你可能感兴趣的文章
508. Most Frequent Subtree Sum (Medium)
查看>>
PADS无模命令总结
查看>>
潭州课堂25班:Ph201805201 爬虫高级 第十二 课 Scrapy-redis分布 项目实战 (课堂笔记)...
查看>>
潭州课堂25班:Ph201805201 django 项目 第二课 git 版本控制 (课堂笔记)
查看>>
PKU 1012
查看>>
【nodejs】让nodejs像后端mvc框架(asp.net mvc)一orm篇【如EF般丝滑】typeorm介绍(8/8)...
查看>>
【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理函数装饰器注册篇(5/8)【controller+action】...
查看>>
[转]Java8 Lambda表达式教程
查看>>
[MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程
查看>>
定时器与锁
查看>>
Tomcat的部署+第一个Servlet
查看>>
javaweb中解决中文乱码问题
查看>>
3-8《Ruby元编程》第二章对象模型
查看>>
987. Binary Number with Alternating Bits
查看>>
十四、Hadoop学习笔记————Zookeeper概述与基本概念
查看>>
回调函数的原理及PHP实例
查看>>
卸载驱动出现:rmmod: can't change directory to '/lib/modules': No such file or directory
查看>>
Scratch与物理·天文:模拟中国嫦娥探月工程,探索月球的背面!
查看>>
大话数据结构 -04-3 队列
查看>>
插入排序算法(C实现)
查看>>