【DLX】Exact cover

水环境综合管控平台完整方案 水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7 阅读详情

Exact cover

http://acm.hust.edu.cn/problem.php?id=1017

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. 

Input

There are multiply test cases.
First line: two integers N, M;
The following N lines: Every line first comes an integer C(1 <= C <= 100), represents the number of 1s in this row, then comes C integers: the index of the columns whose value is 1 in this row.

Output

First output the number of rows in the selection, then output the index of the selected rows. 
If there are multiply selections, you should just output any of them.
If there are no selection, just output "NO".

Sample Input

6 7
3 1 4 7
2 1 4
3 4 5 7
3 3 5 6
4 2 3 6 7
2 2 7

Sample Output

3 2 4 6

算是一个开头吧,下面的是网上搜到的 一个模板,自己加了一些注释。

DLX写起来的确十分复杂啊。


#include<cstdio>
#include<cstring>
#include<climits>
#define N 1024
#define M 1024*110
using namespace std;
int l[M],r[M],d[M],u[M],col[M],row[M],h[M],res[N],cntcol[N];
//l,r,d,u代表左,右,下,上。col,row代表那结点的坐标。h代表行链表。res记录选了哪几行。cntcol记录列中有几个'1'。 
int dcnt=0;
//初始化一个节点
inline void addnode(int &x)
{
    ++x;
    r[x]=l[x]=u[x]=d[x]=x;
}
//将x加入到rowx后
inline void insert_row(int rowx, int x)
{//循环链表 
    r[l[rowx]] = x;
    l[x] = l[rowx];
    r[x] = rowx;
    l[rowx] = x;
}
//将x加入到colx后
inline void insert_col(int colx, int x)
{
    d[u[colx]] = x;
    u[x] = u[colx];
    d[x] = colx;
    u[colx] = x;
}
//全局初始化
inline void dlx_init(int cols)
{
    memset(h,-1,sizeof(h));
    memset(cntcol,0,sizeof(cntcol));
    dcnt=-1;
    addnode(dcnt);//建立'0'头结点 
    for(int i=1;i<=cols;++i)
    {
        addnode(dcnt);//初始化dcnt列 
        insert_row(0,dcnt);//添加dcnt列 
    }
}
//插入矩阵中的"1"节点
inline void insert_node(int x, int y)
{
    cntcol[y]++;//y列中的'1' 的个数+1 
    addnode(dcnt);
    row[dcnt] = x;
    col[dcnt] = y;
    insert_col(y,dcnt);
    if (h[x]==-1) h[x] = dcnt;//建立行链表 
    else insert_row(h[x], dcnt);
}
//删除一列以及相关的所有行
inline 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];
            cntcol[col[j]]--;
        }
}
//恢复一列以及相关的所有行
inline 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]]=j;
            d[u[j]]=j;
            cntcol[col[j]]++;
        }
    l[r[c]]=c;
    r[l[c]]=c;
}
//搜索部分
bool DLX(int deep)
{
    if(r[0]==0)
    {
        //Do anything you want to do here
        printf("%d", deep);
        for (int i=0;i<deep;++i) printf(" %d",res[i]);
        puts("");
        return true;
    }
    int min=INT_MAX,tempc;
    for(int i=r[0];i!=0;i=r[i])//优化,选取列中'1'个数最少的一列 
        if(cntcol[i]<min)
        {
            min=cntcol[i];
            tempc=i;
        }
    remove(tempc);
    for (int i=d[tempc];i!=tempc;i=d[i])
    {
        res[deep]=row[i];
        for(int j=r[i];j!=i;j=r[j]) remove(col[j]);
        if(DLX(deep+1)) return true;
        for(int j=l[i];j!=i;j=l[j]) resume(col[j]);
    }
    resume(tempc);
    return false;
}
int main()
{
    int n,m;
    for(;scanf("%d%d",&n,&m)!=EOF;)
    {
        dlx_init(m);
        for(int i=1;i<=n;++i)
        {
            int k,x;
            scanf("%d",&k);
            for(;k--;)
            {
                scanf("%d",&x);
                insert_node(i,x);
            }
        }
        if(!DLX(0)) puts("NO");
    }
    return 0;
}

来源: http://blog.youkuaiyun.com/ACM_Ted

学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做? 阅读详情

相关推荐

OpenFeign, Zuul, Gateway相互不兼容的问题总结

版本 Lib Vresion spring-cloud-starter-gateway 3.1.0 spring-cloud-dependencies 2021.0.0 spring-cloud-starter-netflix-zuul 2.2.6.RELEASE spring-cloud-starter-openfeign 3.1.0 1. Zuul 与OpenFeign 一起使用的问题 错误信息 jav.

Harry的博客 4132

【HUST - 1017】精确覆盖问题 Exact Cover DLX 解题报告

Exact cover Time Limit:15000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Description There is an N*M matrix with only 0s and 1s, (1 <= N,M &...

357

实验室LIMS系统选型指南:从赛默飞到金现代,5大主流方案横评

本文深入分析了实验室LIMS系统选型的5大核心维度,包括架构选择、行业适配性、合规性设计、智能化程度和成本模型。通过对比赛默飞、金现代等主流厂商的优劣势,提供实战避坑策略,帮助实验室管理者做出明智决策,提升运营效率和合规水平。

plum99的博客 259

[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

Enmity_Dark 662

ADS2020与SystemVue2020Update1.0同机安装避坑指南:解决License冲突,实现EVM联合仿真

本文详细介绍了ADS2020与SystemVue2020 Update1.0同机安装的完整解决方案,重点解决License冲突问题,实现EVM联合仿真。通过合理的安装顺序、路径规划和License服务配置,确保两款EDA工具和谐共存,为射频与微波电路设计提供高效仿真环境。

weixin_30271335的博客 348

[原创]Linux 802.11n CSI tool Monitor模式

Linux 802.11n CSI tool Monitor模式 使用AP模式的缺陷在于ping 命令速度比较慢,且不能精确控制发送的参数,比如接收的包数量是不可控的。Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。期间参考了博主沃一德的CSI Tool安装使用讲解,对他的工作表示感...

u014645508的博客 1万+

hust1017 Exact cover DLX模板

题意是一个N*M的01矩阵,选取若干行,使得选取的集合中没列恰好有一个1..精确覆盖的模板题,dancing links的知识可以去 http://blog.youkuaiyun.com/sunny606/article/details/7833551 看看,讲的还是挺明白的,或者直接去看Knuth 的论文。这类题模板基本不用怎么动,难点在建表,能把题意转化成精确覆盖的模型就没什么难度了.... #in

Broken Wings 833

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 241

HUST 1017 Exact cover(DLX精确覆盖)·(转载)

题目链接 思路链接(转载) 代码链接(转载) 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. T...

qq_43735840的博客 263

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 435

FPGA JTAG接口设计全解析

JTAG是FPGA开发的核心接口,主要用于代码下载和在线调试。14-pin设计中包含TCK、TMS、TDI、TDO四个关键信号,采用信号-地布局增强抗干扰能力,TCK建议串联电阻。10-pin设计需注意转接适配,并推荐使用RCLAMP0524P等低电容TVS二极管进行ESD防护。两种接口设计都强调信号完整性和可靠性,建议PCB布局时保持JTAG走线短且预留调整空间。

在读研究生,FPGA电路设计与功能开发。 2186

【hust1017】【DLX】Exact cover

1017 - Exact cover Time Limit: 15s Memory Limit: 128MB Special Judge Submissions: 7122 Solved: 3668 DESCRIPTION There is an N*M matrix with only 0s and 1s, (1 <= N,M <= 1000). An exac

anantheparty的博客 331

Orin+ GMSL (Ser 9295+Des 9296)流程分析(1)

orin gmsl

乐于分享 2659

HUST 1017 Exact Cover [DLX]

Exact cover Time Limit: 15000MS Memory Limit: 131072KB 64bit IO Format: %lld & %lluDescription There is an N*M matrix with only 0s and 1s, (1 <= N,M <= 1000). An exact cover is a selection o

C'est la vie. 377

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HUST 1017 Exact cover (DLX模板题)

DESCRIPTION There is an N*M matrix with only 0s and 1s, (1 INPUT There are multiply test cases. First line: two integers N, M; The following N lines: Every line first comes an integer C(1 OUTPUT

Misdom_Tian_Ya的专栏 462

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HUST 1017 Exact cover(DLX精确覆盖)

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 r...

weixin_30561425的博客 91

一块开发板搞定AIoT:Ubuntu嵌入式开发与分层数据通路实战

AIoT(人工智能物联网)本质是感知、计算与连接的闭环系统,其核心挑战不在单点算力,而在传感器数据如何低延迟、高可靠地进入AI引擎。现代嵌入式开发已从裸机驱动时代迈入Linux发行版原生支持阶段——当开发板能直接运行标准Ubuntu Server,即意味着具备systemd服务管理、APT包生态、Docker容器化及POSIX兼容性等云基础设施能力。关键技术支撑包括设备树(Device Tree)动态硬件描述、分层确定性数据通路(LDDP)设计、统一设备抽象层(UDA)和轻量化AI推理框架嵌入式就绪。‘开发

weixin_34259232的博客 346

[HDU1017]Exact cover[DLX][Dancing Links详解][注释例程学习法]

Dancing Links解决Exact Cover问题. 用到了循环双向十字链表. 论文一知半解地看了一遍,搜出一篇AC的源码,用注释的方法帮助理解. 详解如下... ... /**总结:DLX使用了基于静态数组的循环双向十字链表的"易恢复性",及其储存稀疏矩阵的简便性, 能较好地解决精确覆盖问题.**/

以中有足乐者... 1118

hust 1017 Exact cover (DLX)

题目链接:http://acm.hust.edu.cn/JudgeOnline/problem.php?id=1017   题意:给定一个01矩阵,要求选择一些行,使每一列有且仅有一个1.   Dancing Links论文中讲到的一题,并以此为基础使另外一些类型的题目转

dooder_daodao的专栏 1431

HUSTOJ1017_Exact cover _跳舞链DLX的精确覆盖

题意给一个 n * m 的图,每一个格子上写着 1 或 0。要求选出一个行的集合,由这个行集合构成的子图中,每一列有且只有一个 1。输出集合元素个数并输出集合,或输出NO。

弱的奋斗之旅 397

HUST 1017 Exact cover DLX

题意:一个n×m行的矩阵,每个格子可能是 0 或者1 现在让你选择 几行 使得 每一列 有且只有一个1.(精确覆盖模板题) 解题思路: dancing links 模板 关于dancing links 献上几篇必看论文 :http://par.buaa.edu.cn/acm-icpc/filepool/r/35/ 板子用的kuangbin的板子(还是适牛的。。) 解题思路: ...

weixin_30315723的博客 118

HUST 1017 Exact cover (DLX不可重复覆盖)

题意: N个点集,M个点,问最少几个点集可覆盖M个点 思路: 不可覆盖舞蹈链模板题 代码: #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; const int in

DT2131 444

HUST 1017 Exact cover(DLX精确覆盖)

         题意是给了n*m的01矩阵,选择最少的行,使得每一列都恰好包含一个1,然后输出这些行 AC代码: #include &lt;bits/stdc++.h&gt; using namespace std; const int maxn = 110; const int maxm = 110; const int maxnode = 110 * 110; int L[maxno...

Charles_Zaqdt的博客 296
上一篇: 【数论】Super Josephus
下一篇: 【并查集】Farm Irrigation
ACM_Ted
博客等级 码龄15年 122粉丝 208原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值