hdu 2255 KM 奔小康赚大钱

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译 本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。 阅读详情

KM算法

基本原理

  该算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[ i ],顶点Yj的顶标为B[ j ],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[ i ]+B[j]>=w[i,j]始终成立。  KM算法的正确性基于以下定理:  若由二分图中所有满足A[ i ]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最大权匹配。  首先解释下什么是完备匹配,所谓的完备匹配就是在二部图中,X点集中的所有点都有对应的匹配或者是  Y点集中所有的点都有对应的匹配,则称该匹配为完备匹配。  这个定理是显然的。因为对于二分图的任意一个匹配,如果它包含于相等子图,那么它的边权和等于所有顶点的顶标和;如果它有的边不包含于相等子图,那么它的边权和小于所有顶点的顶标和。所以相等子图的完备匹配一定是二分图的最大权匹配。  初始时为了使A[ i ]+B[j]>=w[i,j]恒成立,令A[ i ]为所有与顶点Xi关联的边的最大权,B[j]=0。如果当前的相等子图没有完备匹配,就按下面的方法修改顶标以使扩大相等子图,直到相等子图具有完备匹配为止。  我们求当前相等子图的完备匹配失败了,是因为对于某个X顶点,我们找不到一条从它出发的交错路。这时我们获得了一棵交错树,它的叶子结点全部是X顶点。现在我们把交错树中X顶点的顶标全都减小某个值d,Y顶点的顶标全都增加同一个值d,那么我们会发现:  1)两端都在交错树中的边(i,j),A[ i ]+B[j]的值没有变化。也就是说,它原来属于相等子图,现在仍属于相等子图。  2)两端都不在交错树中的边(i,j),A[ i ]和B[j]都没有变化。也就是说,它原来属于(或不属于)相等子图,现在仍属于(或不属于)相等子图。  3)X端不在交错树中,Y端在交错树中的边(i,j),它的A[ i ]+B[j]的值有所增大。它原来不属于相等子图,现在仍不属于相等子图。  4)X端在交错树中,Y端不在交错树中的边(i,j),它的A[ i ]+B[j]的值有所减小。也就说,它原来不属于相等子图,现在可能进入了相等子图,因而使相等子图得到了扩大。  现在的问题就是求d值了。为了使A[ i ]+B[j]>=w[i,j]始终成立,且至少有一条边进入相等子图,d应该等于:  Min{A[ i ]+B[j]-w[i,j] | Xi在交错树中,Yi不在交错树中}。

改进

  以上就是KM算法的基本思路。但是朴素的实现方法, 时间复杂度为O(n^4)——需要找O(n)次增广路,每次增广最多需要修改O(n)次顶标,每次修改顶标时由于要枚举边来求d值,复杂度为O(n^2)。实际上KM算法的复杂度是可以做到O(n^3)的。我们给每个Y顶点一个“松弛量”函数slack,每次开始找增广路时初始化为无穷大。在寻找增广路的过程中,检查边(i,j)时,如果它不在相等子图中,则让slack[j]变成原值与A[ i ]+B[j]-w[i,j]的较小值。这样,在修改顶标时,取所有不在交错树中的Y顶点的slack值中的最小值作为d值即可。但还要注意一点:修改顶标后,要把所有的不在交错树中的Y顶点的slack值都减去d。  Kuhn-Munkras算法流程:  (1)初始化可行顶标的值;  (2)用 匈牙利算法寻找完备匹配;  (3)若未找到完备匹配则修改可行顶标的值;  (4)重复(2)(3)直到找到相等子图的完备匹配为止;


朴素版

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define M 305
#define MAX 900000000
int g[M][M];
int match[M];
int n,ans;
int lx[M],ly[M];
bool vx[M],vy[M];

void read()
{
	int i,j;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			scanf("%d",&g[i][j]);
		}
	}
}

bool find(int x)
{
	vx[x]=true;
	int i;
	for(i=1;i<=n;i++)
	{
		if(!vy[i]&&lx[x]+ly[i]==g[x][i])
		{
			vy[i]=true;
			if(match[i]==0||find(match[i]))
			{
				match[i]=x;
				return true;
			}
		}
	}
	return false;
}

void km()
{
	memset(match,0,sizeof(match));
	memset(lx,0,sizeof(lx));
	memset(ly,0,sizeof(ly));

	int i,j,k;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			lx[i]=max(lx[i],g[i][j]);
		}
	}

	for(i=1;i<=n;i++)
	{
		while(true)
		{
			memset(vx,0,sizeof(vx));
			memset(vy,0,sizeof(vy));

			if(find(i))
			{
				break;
			}
			else
			{
				int temp=MAX;
				for(j=1;j<=n;j++)
				{
					if(vx[j])
					{
						for(k=1;k<=n;k++)
						{
							if(!vy[k] && temp > lx[j]+ly[k]-g[j][k])
							{
								temp=lx[j]+ly[k]-g[j][k];
							}
						}
					}
				}
				
				for(j=1;j<=n;j++)
				{
					if(vx[j])
					{
						lx[j]-=temp;
					}
					if(vy[j])
					{
						ly[j]+=temp;
					}
				}
			}
		}
	}
}

void answer()
{
	ans=0;
	int i;
	for(i=1;i<=n;i++)
	{
		ans+=g[match[i]][i];
	}
	printf("%d\n",ans);
}

int main()
{
	while(~scanf("%d",&n))
	{
		read();
		km();
		answer();
	}
	return 0;
}



链路聚合Eth-trunk以及华为交换机配置实例 链路聚合简介 以太网链路聚合Eth-Trunk简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。 目的: 随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求。在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。 采用链路聚合技术可以在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口 阅读详情

相关推荐

SAP移动类型

SAP移动类型移动类型定义 移动类型定义

qq_20593197的博客 6210

HDU 2255 奔小康赚大钱 (km入门)

传送门:HDU 2255 奔小康赚大钱 KM。。套模板。。 /************************************************************************* File Name: A.cpp ID: obsoles1 PROG: LANG: C++ Mail: 3840

obsolescence的博客 395

极空间NAS零基础部署Wiki.js:Docker+PostgreSQL全流程避坑指南

本文提供了一份在极空间NAS上从零部署Wiki.js私有知识库的详细指南。通过Docker容器化技术,结合PostgreSQL数据库,手把手讲解环境准备、核心组件配置、性能优化及安全加固等全流程,并特别针对极空间平台特性提供了避坑要点,帮助用户打造安全、高效、自主可控的知识管理系统。

3a9bq4r8t2y的博客 488

二分图 最佳匹配 KM算法模板 -- HDU 2255 奔小康赚大钱

HDU 2255 奔小康赚大钱 题意: n个村民重新分配n间房子,接下来n行表示,第i个村民对第j个房子出的价格,问怎样才能使村里的机构获得最大收入。 思路: KM算法模板。 KM算法详解: https://www.cnblogs.com/fzl194/p/8848061.html https://www.cnblogs.com/fzl194/p/8834847.html code: #include<iostream> #include<cstdio> #include<c

dajiangyou123456的博客 376

信号完整性入门:为什么工程师总爱用dB来描述衰减?

本文深入探讨了信号完整性分析中工程师偏爱使用dB(分贝)单位描述衰减的原因。dB通过对数转换,将大动态范围的乘除关系简化为加减运算,极大地方便了多级系统分析和链路预算计算。文章重点解释了-3dB点的核心意义,即功率衰减一半的临界状态,并阐述了其在评估信道带宽、插入损耗与回波损耗等关键参数中的实际应用,是高效工程思维和沟通的重要工具。

weixin_29263201的博客 387

SAP RAP学习系列合集介绍

《SAP RAP学习系列合集:从入门到部署的完整指南》摘要: 本文介绍了作者创建的SAP RAP学习系列合集,涵盖RAP开发从基础概念到实战部署的全流程。系列目前包含17篇文章,系统讲解了RAP核心开发技术:从数据建模、UI构建到行为定义(包括并发控制、草稿功能、授权验证等),最后详细演示了应用部署到Fiori Launchpad的两种方案(OP版和ES版)。

DeveloperMrMeng的博客 1494

HDU 2255 奔小康赚大钱(KM完美匹配)

HDU 2255 奔小康赚大钱 题目链接 题意:中文题 思路:就是KM的裸题 代码: #include #include #include #include using namespace std; const int MAXNODE = 305; typedef int Type; const Type INF = 0x3f3f3f3f; struct

Remilia's 822

17|CI/CD 集成与质量门禁:让精准测试进入发布流水线

本文讲解精准测试如何接入 CI/CD 流水线,并通过质量门禁辅助发布决策。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 68

二分图最佳匹配 KM算法 Hdu2255奔小康赚大钱 + Poj 3565 Ants

理论:http://blog.sina.com.cn/s/blog_691ce2b701016reh.html http://philoscience.iteye.com/blog/1754498 写模板的时候参考了上面两篇博文中的写法。 Hdu 2255 奔小康赚大钱 #include #include #include const int N=310; //每个集合的最大点

whyorwhnt的专栏 1371

北斗导航 | ChatGPT之RTK、RTD、ARAIM算法原理及程序代码(ChatGPT看你怎么回答,附部分代码)

ChatGPT之RTK、RTD、ARAIM算法原理及程序代码

尘世冰封的专栏 3679

手把手教你 Ubuntu 24.04 离线安装 Ollama

本文介绍 Ubuntu 下离线安装 Ollama 并使用 Ollama 部署 llama3.1-70b 大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1021

hdu 2255 奔小康赚大钱 KM算法

SoL:裸裸的最大权匹配。。。 #include #include #include #include using namespace std; const int N = 300+10; const int INF = 0x3f3f3f3f; int nx,ny;//两边的点数 int g[N][N];//二分图描述 int linker[N],lx[N],ly[N];//

imut zcy,I promise You. 784

YOLOv8改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 1082

KM hdu2255 奔小康赚大钱

传送门:点击打开链接 题意:最裸的带权二分图匹配。 思路:KM算法,复杂度为O(n^3),比费用流的效率要快一些,所以有时候必须用KM算法。 但是KM算法的适用范围比较小,要学会去分辨. #include #include #include #include #include #include #include #include #include #include #i

qwb的博客 652

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

hdu2255 奔小康赚大钱 (KM)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题解:KM模版题。 #include #include #define INF 0x3f3f3f3f #define MAXN 302 int w[MAXN][MAXN],match[MAXN],n; int lx[MAXN],ly[MAXN],slack[MAXN];

不可不戒 841

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU 2255 奔小康赚大钱 KM算法

http://acm.hdu.edu.cn/showproblem.php?pid=2255 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。 这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子。 另一方面,村长和另外的村领导希...

xiji333的博客 192

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU 2255 奔小康赚大钱 KM算法

一、内容 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。 这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子。 另一方面,村长和另外的村领导希望得到最大的效益,这样村里的机构才会有钱.由于老百姓都比较富裕,他们都能对每一间房子...

Tizzi的博客 553

hdu 2255奔小康赚大钱 KM算法模板

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 一,KM算法:(借助这个题写一下个人对km的理解与km模板) KM算法主要是用来求解图的最优匹配的。 1,带权二分图:  在二分图中每一条边(x,y)对应一个权值Wi这种二分图叫带权二分图。 一个匹配的权值就是该匹配中所有边的权值之和。 2,最优匹配: 权值最大的一个完美匹配,叫做最

漩涡梦幻 1096

hdu 2255 奔小康赚大钱 KM模板

参考:点击打开链接

uuuuuu 597

HDU 2255:奔小康赚大钱 ← KM算法模板题

若二分图的某个匹配中,所有的顶点都是匹配点,那么这个匹配就是一个完备匹配。若相等子图中存在完备匹配,则这个完备匹配就是二分图的带权最大匹配。

hnjzsyjyj的专栏 804

HDU OJ 2255 奔小康赚大钱【KM模版】

原题连接::http://acm.hdu.edu.cn/showproblem.php?pid=2255 代码: #include #include #include #include using namespace std; const int maxn = 305; const int INF = 2147483647; int w[maxn][maxn]; int lx[max

nyist_飘谊 2694

hdu 2255 奔小康赚大钱(KM模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255

要去相信,没有到不了的明天 710

hdu 2255 奔小康赚大钱(KM算法)

奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3248    Accepted Submission(s): 1413 Problem Description 传说在遥远的地方有一个非常富裕的村落,

Coding A World 4348

奔小康赚大钱 HDU - 2255 (KM算法模板)

题目连接 题目大意: 一个村内,n 家老百姓, n 间房子,然后每家老百姓对不同的房子出的价钱不同,然后问题就是村领导怎样分配才能使收入最大 思路: 裸的 KM 算法 AC代码 #include<iostream> #include<cstring> #include<stdio.h> #include<math.h> #inclu...

Harington的博客 280

hdu2255:奔小康赚大钱(KM)

http://acm.hdu.edu.cn/showproblem.php?pid=2255 Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。 这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只...

500

HDU 2255 奔小康赚大钱(KM)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2255 思路:比较裸的KM算法 KM算法讲解的一些地址: 主要思想:http://wenku.baidu.com/view/28203c49767f5acfa1c7cd38.html 代码过程详解:http://wenku.baidu.com/link?url=oUbIxhSFz_PFzGb-M

Java识堂,一个有干货的微信公众号 489
上一篇: HDU 题目分类
下一篇: POJ 3020 二分匹配
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值