poj 3740 Easy Finding

uniapp + Vue3 跨端前台应用与后台管理系统全栈实战 跨端开发是当前前端领域的重要方向,它通过一套代码同时编译到微信小程序、H5、iOS 和 Android 等多个平台,极大降低了多端业务应用的开发与维护成本。Vue 3 作为主流前端框架,其组合式 API、响应式系统升级以及更完善的 TypeScript 支持,为跨端项目提供了更高效的工程化基础。将 uniapp 与 Vue 3 结合,能够构建出体验良好、可复用的前台应用;同时搭配基于 Vue 3、Pinia、Element Plus 的后台管理系统,可实现商品、订单、用户等业务数据的高效运营管理。从接口文档 阅读详情

        题意:给一个01矩阵,问是否能找到一个行的集合,使得集合中每列出现且仅出现一次‘1’。

        思路:舞蹈链X算法模版题。来谈谈我对这个算法的理解。。这个算法是一个深搜,但是它的数据结构非常巧妙,是一个循环十字链表,把矩阵内为1的元素建立节点,都链起来,还加上了一个“表头”。每次先选一列没找到‘1’的列,如果没有,则寻找失败;如果有,选择一行,把这行,这行有‘1’的列,与这行有公共列出现‘1’的行统统在链表中暂时隐去。。然后往下深搜,若出现所有列都被隐去的情况,则寻找成功。因为递归过程中,被“隐藏”的节点的指针没有被改变,只是从h遍历不到它,所以递归(切断一些链)和回溯(复原一些链)十分高效。。


#include<iostream>
#include<cmath>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<string.h>
#include<cstdio>

using namespace std;

#define maxn 310
#define maxnode maxn*18

struct DLX{
	int n,sz;
	int S[maxn];
	int row[maxnode],col[maxnode];
	int L[maxnode],R[maxnode],U[maxnode],D[maxnode];
	
	int ansd,ans[maxn];
	
	void init(int n){
		this->n=n;
		for(int i=0;i<=n;i++){
			U[i]=i; D[i]=i; L[i]=i-1; R[i]=i+1;
		}
		R[n]=0; L[0]=n;
		sz=n+1;
		memset(S,0,sizeof(S));
	}
	
	void addRow(int r,vector<int> columns){
		if(columns.empty())return;
		int first=sz;
		int csiz=columns.size();
		for(int i=0;i<csiz;i++){
			int c=columns[i];
			L[sz]=sz-1; R[sz]=sz+1; D[sz]=c; U[sz]=U[c];
			D[U[c]]=sz; U[c]=sz;
			row[sz]=r; col[sz]=c;
			S[c]++; sz++;
		}
		R[sz-1]=first; L[first]=sz-1;
	}
	
	#define FOR(i,A,s) for(int i=A[s];i!=s;i=A[i])
	
	void remove(int c){
		L[R[c]]=L[c];
		R[L[c]]=R[c];
		FOR(i,D,c){
			FOR(j,R,i){
				U[D[j]]=U[j]; D[U[j]]=D[j]; --S[col[j]];
			}
		}
	}
	
	void restore(int c){
		FOR(i,U,c){
			FOR(j,L,i){
				++S[col[j]]; U[D[j]]=j; D[U[j]]=j;
			}
		}
		L[R[c]]=c;
		R[L[c]]=c;
	}
	
	bool dfs(int d){
		if(R[0]==0){
			ansd=d;
			return 1;
		}
		
		int c=R[0];
		FOR(i,R,0){
			if(S[i]<S[c])c=i;
		}
		
		remove(c);
		FOR(i,D,c){
			ans[d]=row[i];
			FOR(j,R,i){
				remove(col[j]);
			}
			if(dfs(d+1))return 1;
			FOR(j,L,i){
				restore(col[j]);
			}
		}
		restore(c);
		return 0;
	}
	
	bool solve(vector<int>& v){
		v.clear();
		if(!dfs(0))return 0;
		for(int i=0;i<ansd;i++)v.push_back(ans[i]);
		return 1;
	}
};


DLX dlx;

int main(){
	int n,m;
	while(cin>>n>>m){
		dlx.init(m);
		
		vector<int> vec;
		for(int i=1;i<=n;i++){
			vec.clear();
			for(int j=1;j<=m;j++){
				int t;
				scanf("%d",&t);
				if(t)vec.push_back(j);
			}
			dlx.addRow(i,vec);
		}
		
		vector<int> a;
		if(dlx.solve(a)){
			printf("Yes, I found it\n");
		}else{
			printf("It is impossible\n");
		}		
	}
	return 0;
}


基于BFQ19S的共射振荡器设计(克拉泼电容三点式) 根据理论,设计出如下LC振荡器: 一、设计初期是使用= 400Mhz作为目标值计算的, 但由于计算值与实际值有差别,所以使用计算值附近的元器件代替使用;最终该电路的L1=82nH , D1 = 5.6pF, C11=18pF, C12 = 18pF ; 另外R3= 600Ω, R4取27k , C9取10pF; 该电路实际的震荡频率为主要为L1,D1 决定,所以其震荡频率约为 == 235Mhz; 二、由于实际得到的频率比目标频率低太多,所以调整电路使其能达到400M左... 阅读详情

相关推荐

简化神经元模型6 -- Hindmarsh-Rose Model

简化神经元模型 6 Hindmarsh-Rose Model

weixin_73557167的博客 1427

【POJ 3740】 Easy Finding

【题目链接】 http://poj.org/problem?id=3740 【算法】 Dancing Links算法解精确覆盖问题 详见这篇文章 :https://www.cnblogs.com/grenet/p/3145800.html 【代码】 #include &l...

117

微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点)

第二章 1.8086/8088CPU可直接寻址多少个内存(字节)单元?多少个I/O端口?它们的外部数据总线各有多少根? 8086/8088CPU使用的是20位地址总线,因此可以直接寻址2的20次方个内存单元(即1,048,576),每个单元大小为1字节,因此可以直接寻址2的20次方个字节的内存。 8086/8088CPU有64K个I/O端口,每个端口占用1字节的地址空间,因此可以直接寻址6...

Wmicheng的博客 1万+

POJ 3740 Easy Finding【Dancinglinks】

http://poj.org/problem?id=3740POJ 3740 Easy Finding 大意:精确覆盖问题:给定一个由0和1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个 1?分析:用跳舞链来解决该问题即可 跳舞链的核心: 如果A是空的,问题解决;成功终止。 否则,选择一个列c(确定的)。 选择一个行r,满足 A[r, c]...

a48634331的博客 166

扩视机器视觉—Halcon机器视觉48个实战项目六(检测定位角度)

此项目halcon检测检测定位角度问题,并显示。

qq_21516871的博客 1096

Arduino创意作品实战案例:手把手教你做温控风扇

通过这个实用的arduino创意作品,轻松实现温度感应与风扇自动控制,结合传感器与编程逻辑,打造智能散热系统,是入门者理想的arduino创意作品实践项目。

weixin_42311427的博客 609

POJ-3740-Easy Finding【DLX精确覆盖】

POJ-3740-Easy Finding

Linoy 830

一篇文章带你搞定数学建模中的线性回归模型(05年长江水质问题示例讲解含代码)

文章目录一、问题分析二、原理讲解三、MATLAB 实现线性回归模型 一、问题分析 根据你的预测分析,如果未来10年内每年都要求长江干流的Ⅳ类和Ⅴ类水的比例控制在20%以内,且没有劣Ⅴ类水,那么每年需要处理多少污水 为了达到题目中所要求的水质,可建立废水排放量与各类水百分比之间的二元线性回归模型,对未来十年的废水排放量进行预测,并确定其与各类水所占百分比之间的函数关系式。通过此关系式,可以计算在这种情况下长江所能承受的最大污水排放量,将这个排放量与预测的排放量进行比较,多出来的部分就是需要每年处理掉的。 二、

南淮北安的博客 2166

POJ 3740 Easy Finding

Description Given a M× N matrix A. Aij ∈ {0, 1} (0 ≤ i Input There are multiple cases ended by EOF. Test case up to 500.The first line of input is M, N ( M ≤ 16, N ≤ 300). The next

Occult 590

【AI智能体】Codex 开发聚合搜索应用项目实战操作详解

Codex 开发聚合搜索应用项目实战操作详解

congge 3096

STM32实战开发(71):STM32人脸识别开发教程:基于摄像头模块的人脸识别系统

在嵌入式系统中,STM32凭借其强大的计算性能、丰富的外设接口以及低功耗特性,成为了实现人脸识别系统的理想平台。STM32虽然没有强大的计算能力,但可以通过合理利用外部硬件加速模块,如DSP、GPU、FPGA等,结合轻量级的人脸识别算法,实现高效的人脸识别系统。尽管STM32的计算资源相对有限,但通过合理的优化和使用高效的算法,我们依然能够实现高效的人脸识别功能。在本项目中,我们使用。在STM32开发中,虽然处理能力有限,但通过优化算法和合理利用硬件加速,我们仍然可以实现一个轻量级的、实时的人脸识别系统。

2201_76125393的博客 1662

【POJ3740】Easy Finding,解题报告+思路+代码

#include #include #include #include //#define INPUT /** Problem: poj3740 - Easy Finding Begin Time:8:30 p.m. 20th/Mar/2012 End Time: 8:42 p.m. 21st/Mar/2012 Last Time: Maybe 4hours

c0de4fun的完美算(nei)法(he)教室-我们仍不知道,那天调用的驱动的名字。 2649

2025年数学建模国赛高教社杯A题、B题、C题、D题、E题详细思路和代码 模型||插值与拟合

核心思想:构造一个精确通过所有已知离散数据点(xi, yi)的函数y = f(x),并以此函数来估算或预测未知点的值。基本假设:我们认为已知的数据点是100%精确、无误差的(或者误差可忽略不计),比如理论计算值、高精度仪器测量值等。我们的目标是“还原”或“重建”出点与点之间的真实函数关系。关键特征精确性:曲线或曲面必须穿过每一个样本点。局部性:插值结果严重依赖于局部数据点的分布和数值。用途:用于“补全”数据、填充缺失值、进行函数近似等。常见方法多项式插值:拉格朗日插值、牛顿插值。

2201_76125261的博客 802

poj——3740 Easy Finding

POJ - 3740 Easy Finding Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit Status Description Given a M× N matrix A. Aij ∈ {0, 1} (0

我们做的队 670

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

POJ 3740 Easy Finding题解

POJ 3740 Easy Finding Given a M×N matrix A. Aij ∈ {0, 1} (0 ≤ i < M, 0 ≤ j < N), could you find some rows that let every cloumn contains and only contains one 1. Input There are multiple cases ended by EOF. Test case up to 500.The first line of inpu.

风吹落叶的博客 169

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

poj-3740 Easy Finding

题意: 给出一个n*m的01矩阵,选择其中的一些行,来精确覆盖每一列; 只需要输出是否存在解即可; n 题解: DLX裸题,利用双向十字链表优化搜索中的回溯问题; 因为每一列上都只能有且仅有一个1,所以如果某一列上已经有了1,那么这一列上有1的其他行也可以被删除; 根据这个思想是我们有了一个很厉害的剪枝条件,但是如果直接在矩阵中删除速度太慢,要求空间太多; 所以就有了这种支

140142 1515

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

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

【POJ】3740 Easy Finding 精确覆盖入门题

传送门:【POJ】3740 Easy Finding 题目分析:

poursoul 1180

POJ3740-Easy Finding

#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long const int INF =

wang_128的博客 329

POJ 3740 Easy Finding

 Description Given a M× N matrix A. Aij ∈ {0, 1} (0 ≤ i < M, 0 ≤ j < N), could you find some rows that let every cloumn contains and only contains one 1. Input There are

UntilTheEnd的专栏 585

Easy Finding POJ - 3740 (DLX)

显然这是一道dfs简单题 或许匹配也能做 然而用了dancing links 显然这也是一道模板题 好的吧 调了一上午 终于弄好了模板 Easy Finding Time Limit:1000MS Memory Limit:65536K Total Submissions:19052 Accepted:5273 De...

weixin_30532759的博客 83

【POJ】3740 Easy Finding

1 #include<cstdio> 2 #define INF 0x7FFFFFFF 3 #define MAXN 90010 4 int n, m, size; 5 int L[MAXN], R[MAXN], U[MAXN], D[MAXN], H[MAXN]; 6 int C[MAXN], S[MAXN]; 7 void Init() ...

weixin_30248399的博客 59

poj3740 Easy Finding DLX

跟上题差不多,还是一个01矩阵,问是否可以选出若干行使得每列恰有一个1。模型都给建好了,直接建表搜就可以了.. #include #include #include #include #include using namespace std; typedef long long ll; const int maxn=320*320; struct DLX { int col[

Broken Wings 797
上一篇: hdu 5119 Happy Matt Friends
下一篇: 模板--DLX
squee_spoon
博客等级 码龄14年 61粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值