HUST 1017 Exact cover(Dancing Links)(精确覆盖问题)

SDK报错(1)undefined reference to `f_mount‘ 按文中说法是ff.c文件中用了一个if语句来判断是否启用ff.h头文件,但是却没有地方进行宏定义来满足这个if条件。利用SDK读取sd卡时,添加了xilffs库,而且包含了ff.h头文件,还是对fat库的函数报错。网上有的说在ARM v7 gcc linker中添加xilffs的方法可以解决,但我试了没有用。如下图,我们可以在ff.c中自己添加一个宏定义来实现这个条件。最后在赛灵思论坛找到了一个解决方法,原文连接如下。这时候保存编译之后,报错就消失了。ff.c 文件在bsp工程下。 阅读详情

Exact cover

题目链接:

http://acm.hust.edu.cn/problem/show/1017

解题思路:

题目大意:

本题就是给你一个由0,1元素组成的矩阵,问取出哪几行,可以使这几行构成的新矩阵,每列只有一个1.

算法思想:

Dancing Links模板题。

如果有人还不了解双向链表的人可以先看一下这位大牛的博客:http://blog.sina.com.cn/s/blog_7d44748b01013fsf.html

不过Dancing Links并不是双向链表,而是十字链表。(ps:记得数据结构书上有提到过,不过本弱并不晓得这东西有什么用,这次算是长知识了。)

学Dancing Links可以参照http://www.cnblogs.com/grenet/p/3145800.html这位神牛的博客。

至于Dancing Links的一些用途,可以看看这位大牛的博客。http://blog.youkuaiyun.com/mu399/article/details/7627862

AC代码:

#include <iostream>
#include <cstdio>
using namespace std;

const int maxnode = 100010;
const int maxm = 1010;
const int maxn = 1010;

struct DLX{
    int n,m,len;
    int U[maxnode],D[maxnode],R[maxnode],L[maxnode],Row[maxnode],Col[maxnode];
    int H[maxn];//行头结点
    int S[maxm];//每列有多少个结点
    int ansd,ans[maxn];//如果有答案,则选了ansd行,具体是哪几行放在ans[]数组里面,ans[0~ansd-1]

    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-1;
            R[i] = i+1;
        }
        R[m] = 0,L[0] = m;
        len = m;//编号,每列都有一个头结点,编号1~m
        for(int i = 1; i <= n; i++)
            H[i] = -1;//每一行的头结点
    }

    void link(int r,int c){//第r行,第c列
        ++S[Col[++len]=c];//第len个节点所在的列为c,当前列的结点数++
        Row[len] = r;//第len个结点行位置为r
        D[len] = D[c];
        U[D[c]] = len;
        U[len] = c;
        D[c] = len;
        if(H[r] < 0)
            H[r] = L[len] = R[len] = len;
        else{
            R[len] = R[H[r]];
            L[R[H[r]]] = len;
            L[len] = H[r];
            R[H[r]] = len;
        }
    }

    void del(int c){//删除结点c,以及c上下结点所在的行
        //每次调用这个函数,都是从列头节点开始向下删除,这里c也可以理解为第c列
        //因为第c列的列头节点编号为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){//回复结点c,以及c上下节点所在的行(同上,也可以理解为从第c列的头节点开始恢复
        for(int i = U[c]; i != c; i = U[i]){
            for(int j = L[i]; j != i; j = L[j]){
                ++S[Col[U[D[j]]=D[U[j]]=j]];
            }
        }
        L[R[c]] = R[L[c]] = c;
    }

    bool dance(int d){//递归深度
        if(R[0] == 0){
            ansd = d;
            return true;
        }
        int c = R[0];
        for(int i = R[0]; i != 0; i = R[i]){
            if(S[i] < S[c])
                c = i;
        }

        del(c);//找到结点数最少的列,当前元素不是原图上0,1的节点,而是列头节点
        for(int i = D[c]; i != c; i = D[i]){
            ans[d] = Row[i];//列头节点下面的一个节点
            for(int j = R[i]; j != i; j = R[j])
                del(Col[j]);
            if(dance(d+1))//找到,返回
                return true;
            for(int j = L[i]; j != i; j = L[j])
                resume(Col[j]);
        }
        resume(c);
        return false;
    }
};

DLX head;

int main(){
    int n,m;
    while(~scanf("%d%d",&n,&m)){
        head.init(n,m);
        for(int i = 1; i <= n; i++){
            int cnt,x;
            scanf("%d",&cnt);
            while(cnt--){
                scanf("%d",&x);
                head.link(i,x);
            }
        }

        if(!head.dance(0))
            printf("NO\n");
        else{
            printf("%d",head.ansd);
            for(int i = 0; i < head.ansd; i++)
                printf(" %d",head.ans[i]);
            printf("\n");
        }
    }
    return 0;
}


【一 扣子客户案例合集】【 1.1 抖音电商:通过扣子智能体重塑电商服务新体验】 **摘要:**抖音电商借助扣子(Coze)智能体平台重塑客服体验,通过无代码开发、多模态交互和跨平台发布等功能,解决了传统客服高峰期压力大、成本高及响应机械等痛点。智能体采用直接面客与人工监管结合模式,实现高效精准服务,并通过解构流程、模块化设计优化系统架构。其技术优势包括零配置学习、意图识别、情绪感知等,实际应用中显著提升客服效率300%以上,改善用户体验。未来将进一步拓展至商品推荐、直播互动等场景,推动电商服务智能化升级。 阅读详情

相关推荐

Claude Code 接入 DeepSeek-V4 教程

本文介绍Claude Code的安装配置流程:1) 安装Node.js 18+和Git(Windows);2) 通过npm全局安装@anthropic-ai/claude-code;3) 配置DeepSeek API环境变量(需替换API Key);4) 启动Claude Code或配置VSCode插件。重点包括Linux/macOS和Windows的环境变量设置方法,以及VSCode插件的settings.json配置项。完成配置后即可在终端或VSCode中使用Claude Code功能。

培根芝士的专栏 2001

精确覆盖问题

精确覆盖问题(Exact Cover Problem),指给定许多集合Si(1≤i≤n)S_i\left(1\le i\le n\right)Si​(1≤i≤n), 以及集合X⊂SX\subset SX⊂S,求满足以下条件的无序多元组(T1,T2,⋯ ,Tm)\left(T_1,T_2,\cdots,T_m\right)(T1​,T2​,⋯,Tm​):(001011010010010110010100100001000010001101) \left(\begin{array}{lllllll} 0 & 0

思维缜密的博客 1484

【Office激活】学校正版Office已激活成功仍弹出激活窗口

学校正版Office激活问题:已激活成功仍弹出激活窗口

ESCM_的博客 1万+

精确覆盖问题的回溯算法(一)——问题描述

一、问题描述 精确覆盖问题(Exact Cover Problem),是指给定了一个全集S以及它的m个子集S1、S2、..Sm以后,要求出一组子集,使这组子集的并等于原来的全集S,且各子集两两不交。 例:设 S={1,2,3,4,5,6,7}, A={1,4,7}, B={1,4}, C={4,5,7}, D={3,5,6}, E={2,3,6,7} ,F={2,7} 则子集组

laomai的专栏 3719

osgearth2.10 demo功能介绍

osgearth-2.10 demo: 说明: 1、运行环境win7 x64 旗舰版,CPU i5-6400 8核,8G内存; 2、括号内是对应demo的测试参数(.earth); 3、配置OSG_FILE_PATH; 4、参数命令行可以查看各个demo需要的输入参数; 5、前缀说明:gui界面程序、cmd控制台程序、non功能未知; 6、程序后括号里的non表示不需要通过命令行输入参数; 示例: 1、gui:osgearth_3pv(simple.earth):相机与地球的投影关系,Range表示相机

rach09的专栏 2421

主成分分析(PCA)和局部线性嵌入(LEE)原理详解

从KNN谈“维度灾难”,介绍线性降维PCA和局部线性嵌入LLE 这两种降维方法的原理

superzzx0920的博客 5616

HUST 1017(DLX)

大白书上讲的精确覆盖模板题,DLX。 #include #include #include const int MN=1005; const int MM=1005; const int MNN=1e5+5+MM; //最大点数 struct DLX { int n,m,si;//n行数m列数si目前有的节

constbh的博客 342

极简JEPA世界模型实战:低门槛复现LeWorldModel,CPU可跑

这次我们来看一个能让普通开发者真正上手跑起来的“世界模型”项目。如果你对Yann LeCun提出的JEPA(联合嵌入预测架构)框架感兴趣,但又苦于Meta官方实现过于庞大复杂,那么这个GitHub上4k star的项目就是为你准备的。它用极简的PyTorch代码(核心文件仅160-278行)完整复刻了包括LeWorldModel在内的五个JEPA核心变体,最大的亮点是: 门槛极低,普通笔记本甚至CPU就能跑,显存占用友好,非常适合学习和原理验证。 这个项目名为 keon/jepa ,完全开源。它剥离了工业级

weixin_29031161的博客 421

Dancing Links and Exact Cover

1. Exact Cover Problem DLX是用来解决精确覆盖问题行之有效的算法。 在讲解DLX之前,我们先了解一下什么是精确覆盖问题(Exact Cover Problem)? 1.1 Polyomino 多联骨牌(Polyomino)是一种类似于七巧板的棋盘游戏: 如下图所示,除去中间\(4\)个方格不允许放置任何东西,这个棋盘总共有\(8*8-4=60\)个方格 将这\...

dgt2947的博客 258

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧)

本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。

weixin_30872157的博客 195

使用 Pfam 和 InterProScan 进行蛋白质家族和功能域的分析

本文介绍了使用Pfam和InterProScan进行蛋白质家族与功能域分析的方法。主要内容包括:1) Pfam数据库的本地化使用,通过hmmscan工具比对Pfam-A.hmm数据库,并提供了批量处理Python脚本;2) InterProScan的安装配置与命令行参数详解,支持多数据库整合分析;3) 补充介绍了基于curl的Uniprot在线查询方法。文章提供了从软件安装到实战分析的完整流程,适用于本地化、批量化蛋白质功能注释需求,特别是无网络环境或大规模数据分析场景,适合不同水平的生物信息学用户。

Protein Designer的博客 1917

【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 &...

356

【24届秋招总结】24届数字IC秋招给学弟学妹们的99条建议(标题党)

针对2023年找实习、秋招、谈薪资等方面的个人经验进行总结,希望对后续同学们找工作有所帮助

qq_42135020的博客 4458

HUST1017 Exact cover —— Dancing Links 精确覆盖 模板题

题目链接:https://vjudge.net/problem/HUST-1017 1017 - Exact cover 时间限制:15秒 内存限制:128兆 自定评测 7673 次提交 3898 次通过 题目描述 There is an N*M matrix with only 0s and 1s, (1 输入 There are mult

A man can be destroyed, but not defeated. 634

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

hust1017Exact cover(Dancing Links)

题目链接:点这里!!! 题解:Dancing Links第一题,抄了几下kuangbin的板子,感觉这东西真TM的吊!! 推荐篇blog:http://www.cnblogs.com/grenet/p/3145800.html 代码: #include #include #include #include #include #include #include #in

Zsss的博客 407

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

hust 1017 Exact cover 最小覆盖问题 dancing links

虽然已经退役,但是还是希望能够补一补自己不会的东西,昨天学习了dancing links(舞蹈链),然后做了这个入门级的水题,前后代码重写了好几次,现在算是自己理解了dancing links。 言归正传。 这道题的意思是,从一个01矩阵中选出若干个行,使得这些行组成的矩阵满足恰好每列有且仅有一个1,换句话说,有这些行,恰好可以覆盖每个列 解题思路如下: 1、选出一个列c,然后找能够覆

renew 1421

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

hust1017 Exact cover DLX模板

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

Broken Wings 833

HUST 1017. Exact cover(Dancing Links存储matrix,dfs)

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

Jacob0824的博客 734

[kuangbin]专题三 Dancing Links Exact cover HUST - 1017【精确覆盖】

【题目描述】 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 t...

inv0ker的博客 194

HUST 1017 Exact cover (精确覆盖|Dancing Links模板题)

题意:精确覆盖问题。 思路:测试模板。 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define eps 1e-6 #define LL long long #define pii pa

GODSPEED 526

HUST 1017 Exact cover (Dancing Links 模板题)

题目大意: 就是N*M的01矩阵, 初始有C(C 大致思路: 跳舞链解决的矩阵精确覆盖问题, 模板题 模板来自kuangbin大爷Orz 代码如下: Result  :  Accepted     Memory  :  1916 KB     Time  :  164 ms /* * Author: Gatevin * Created Time: 2015/1

Gatevin的专栏 708

HUST1017 Exact cover(Dancing Links)Kuangbin模板带解释

Status 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 fin

MrBlank的ACM记事本 493

Exact cover HUST - 1017 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.Try to find out the...

dianzhenquan3519的博客 157

【HUST】1017 Exact cover 精确覆盖入门题——Dancing Links

传送门:【HUST】1017 Exact cover 题目分析:Dancing Links m

poursoul 947

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

HUST 1017 Exact cover(Dancing Links 精确覆盖)

1017 - Exact cover Time Limit: 15s Memory Limit: 128MB Special Judge Submissions: 6192 Solved: 3258 DESCRIPTION There is an N*M matrix with only 0s and 1s, (1 INPUT There are multip

youngkl博客 840
上一篇: hdu1241 Oil Deposits
下一篇: ZOJ 3209 Treasure Map(Dancing Links)(精确覆盖问题)
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值