POJ 2195 min_cost_max_flow

min_cost_max_flow:找到具有非负流量成本的给定流量网络的最小成本最大 st 流量 Min_Cost_Max Flow_with_Non-Negative_Weight 该程序提供了找到给定流网络的最小成本最大 st 流的实现。该流网络内的所有成本都应该是非负的。 输入格式。 每个案例的第一行包含两个数字:Vnum 和 Enum,其中 Vnum 和 Enum 是图的顶点和边的数量。 下面的枚举行描述了这个图的边。 每行有 3 个数字 v1、v2、cap 和 c,它们表明从 v1 到 v2 有一条有向边,容量上限和成本为 c。 最后一行表示该流网络的源节点和汇节点。 样本输入。 6 7 1 2 3 1 1 3 3 1 2 4 2 1 3 5 2 1 5 2 1 1 4 6 4 1 5 6 4 1 此示例输入描述了一个由 6 个顶点和 7 个有向边组成的流网络。 立即下载

给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致。man每移动一格需花费$1(即单位费用=单位距离),一间house只能入住一个man。现在要求所有的man都入住house,求最小费用。

建图:
s连每个房间 c为1 cost为0
每个人连t c为1 cost为0
每个房间连每个人 c为1 cost为abs(x)+abs(y)

然后跑最小费用流

算法一次敲对了,数组开小了,坑爹啊


#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

const int n_max=205;
const int m_max=21505; 
const int inf=1<<30;
struct edge
{
	int u,v,cap,cost,pre;
	void add(int pu,int pv,int pcap,int pcost,int ppre)
	{
		u=pu;
		v=pv;
		cap=pcap;
		cost=pcost;
		pre=ppre;
	}
}e[m_max];
int ne;
int head[n_max];
int min_cost,max_flow;
struct point
{
	int x,y;
	void add(int xx,int yy)
	{
		x=xx;
		y=yy;
	}
}hou[n_max],man[n_max];
int nhou,nman;

void init()
{
	ne=0;
	memset(head,-1,sizeof(head));
}

void addedge(int u,int v,int cap,int cost)
{
	e[ne].add(u,v,cap,cost,head[u]);
	head[u]=ne++;
	e[ne].add(v,u,0,-cost,head[v]);
	head[v]=ne++;
}

void min_cost_max_flow(int s,int t)
{
	min_cost=max_flow=0;
	while(true)
	{
		int p[n_max];
		memset(p,-1,sizeof(p));
		int d[n_max];
		int i;
		for(i=0;i<n_max;i++)
		{
			d[i]=inf;
		}
		d[s]=0;
		bool inq[n_max];
		memset(inq,0,sizeof(inq));
		queue<int> q;
		q.push(s);
		inq[s]=true;
		int u,v;
		while(!q.empty())
		{
			u=q.front();
			q.pop();
			inq[u]=false;
			for(i=head[u];i!=-1;i=e[i].pre)
			{
				v=e[i].v;
				if(e[i].cap&&d[v]>d[u]+e[i].cost)
				{
					d[v]=d[u]+e[i].cost;
					p[v]=i;
					if(!inq[v])
					{
						q.push(v);
						inq[v]=true;
					}
				}
			}
		}
		if(d[t]==inf)
		{
			break;
		}
		int nmin=inf;
		for(i=p[t];i!=-1;i=p[e[i].u])
		{
			nmin=min(nmin,e[i].cap);
		}
		for(i=p[t];i!=-1;i=p[e[i].u])
		{
			e[i].cap -= nmin;
			e[i^1].cap += nmin;
		}
		min_cost += d[t]*nmin;
		max_flow += nmin;
	}
}

int main()
{
	char str[110];
	int n,m,s,t;
	while(~scanf("%d%d",&n,&m))
	{
		nhou=nman=0;
		if(n+m==0)
		{
			break;
		}
		int i,j;
		for(i=0;i<n;i++)
		{
			scanf("%s",str);
			for(j=0;j<m;j++)
			{
				if(str[j]=='H')
				{
					hou[++nhou].add(i,j);
				}
				else if(str[j]=='m')
				{
					man[++nman].add(i,j);
				}
			}
		}
		s=0;
		t=nhou+nman+1;
		init();
		for(i=1;i<=nhou;i++)
		{
			for(j=1;j<=nman;j++)
			{
				int cost=fabs(hou[i].x-man[j].x) + fabs(hou[i].y-man[j].y);
				addedge(i,nhou+j,1,cost);
			}
		}
		for(i=1;i<=nhou;i++)
		{
			addedge(s,i,1,0);
		}
		for(j=1;j<=nman;j++)
		{
			addedge(nhou+j,t,1,0);
		}
		min_cost_max_flow(s,t);
		printf("%d\n",min_cost);
	}
	return 0;
}



fdtd(时域有限差分)仿真 基础入门阶段采用 Step by step 的教学方式带着做具体的案例,在案例中学习 FDTD 应用的。的痛难点,将 FDTD 仿真引入实验当中,通过软件可视化处理有效直观的展示仿真的流程,与实验数。图像传感器,OLED 和液晶,表面计量,表面等离子体,石墨烯,太阳能电池,集成光子组件,超材。料,衍射光学和光子晶体。波,场极化,磁场,周期性结构,半球功率积分等设计解决方案,提供时域有限差分分析函数,时域。子光学传感器、热电子光探测器的光学特性研究、光学微腔宽带吸收器等多个方向的研究方法。 阅读详情

相关推荐

GPT大模型在数学建模中的实战应用:从思路启发到代码生成

数学建模是将现实问题抽象为数学问题并求解的核心方法,其关键在于通过合理的假设与简化,构建可计算的数学模型。传统建模依赖MATLAB等工具进行推演试错,而大语言模型的出现革新了这一范式。GPT等模型通过理解自然语言、辅助逻辑推理与代码生成,能有效提升建模效率与质量,在问题解析、模型构建、算法实现等环节提供关键支持。本文聚焦GPT在数学建模中的具体应用,涵盖赛题解读、模型推导、代码生成与结果分析,并结合实战案例,探讨如何将其作为“副驾驶”融入建模全流程,实现人机协同的智能化建模。

weixin_29061465的博客 325

最小费用路算法

(1)时间复杂度:从算法描述中可以看出,找到一条可增广路的时间是O(E),最多会执行O(VE)次,因为关键边的总数为O(VE),因此总的时间复杂度为O(VE2),其中V为结点个数,E为边的数量。最小费用路算法,是在残余网络上寻找从源点到汇点的最小费用路,即从源点到汇点的以单位费用为权的最短路,然后沿着最小费用路增流,直到找不到最小费用路为止。先初始化为零流,零流对应的混合网络中,正向边的容量为cap,流量为0,费用为cost,反向边容量为0,流量为0,费用为−cost。继续找最小费用路,增流。

m0_73460731的博客 1297

告别玄学调参:手把手教你用LSTM-AutoEncoder为传感器数据做异常检测(实战篇)

本文详细介绍了LSTM-AutoEncoder在传感器数据异常检测中的工程化实践,包括数据预处理、模型架构设计和生产环境部署策略。通过结合LSTM的时间序列处理能力和AutoEncoder的特征提取优势,该方法能够有效识别温湿度、PM2.5等传感器数据的异常模式,适用于工业物联网和室内空气质量监测等场景。

weixin_29212429的博客 477

min cost max flow算法示例

问题描述 给定g个group,n个id,n<=g.我们将为每个group分配一个id(各个group的id不同)。但是每个group分配id需要付出不同的代价cost,需要求解最优的id分配方案,使得整体cost之和最小。 例子 例如以下4个group,三个id,value矩阵A: value id1 id2 id3 H1 4 3 0 H2 1 0 0 H3 2 0 2...

weixin_30345055的博客 805

802.1x之EAP-TLS测试方法

CA证书一般是由权威的认证机构发出,用来验证该机构签名的证书,持有CA证书的设备可以验证对端的证书是否由自己信任的机构颁发的。在我们内部使用证书时,我没可以自己充当CA认证机构,管理私钥和CA证书,使用他们签名服务器、客户端证书。2、使用证书请求文件server_csr.pem、CA私钥、CA公钥生成服务器证书(正常情况下自己不拥有CA私钥,是把证书请求文件发给认证机构,由认证机构返回证书)进行802.1x EAP-TLS认证时需要IPC、服务器分别存储CA证书、设备证书、私钥,通过交换证书实现身份验证。

写作是为了更好的思考 2166

自然二进制数与格雷码的相互转换

自然二进制数与格雷码两者优势: 自然二进制数的编码方式简单明了,容易理解,在加减运算中能够直接进行,同时十分方便进行一些位运算操作(如移位、取反等)。 格雷码计数时只有一位变化,可有效减少计数器状态的冗余转换,同时在传输数据时能够减小传输错误的概率,此外带权重编码处理更加方便。 在一定程度上自然二进制数与格雷码优缺点基本相反,综上所述,自然二进制数和格雷码各有优劣之处,需要根据具体应用场景选择合适的编码方式。简单来说,在计数器和编码器中,倾向于使用格雷码;而在进行加减运算时,则倾向于使用自然二进制数。

Loudrs的博客 7495

minCostMaxFlow Template

#include #include #include using namespace std; const int MAXN = 200; const int INF = 0x7fffffff; struct MCMF_{ int head[MAXN], cnt; int pre[MAXN], pos[MAXN]; int dis[MAXN], que[MAXN *

Rocking_Bee's Blog 536

PLSQL Developer安装详细步骤

一、下载安装PLSQL Developer(plsql安装百度也有步骤) 官网下载地址:https://www.allroundautomations.com/registered-plsqldev/ 1、网上自己下载适合自己电脑的安装包(32或64),并解压。 2、打开解压的文件夹,得到以下三个文件(分别是汉化工具,PLSQL安装包、激活码),双击安装,如下图: 3、安装界面,点击next,进入下一步,如图: 4、安装协议界面,此处必须选择“I accept the terms in

Gorden的博客 11万+

MinCostMaxFlow-Graph Algorithm

图的构建使用邻接表来存储图的结构,每个节点对应一个列表,列表中存储从该节点出发的所有边。通过addEdge方法添加有向边及其反向边,同时设置正向边和反向边的相互引用。最小费用最大流算法算法主体在方法中,使用循环不断寻找增广路径,直到无法找到从源点到汇点的路径为止。在每次循环中,使用 Dijkstra 算法来寻找从源点到汇点的最小费用路径,通过维护距离数组dist、前驱边数组parent和优先队列pq来实现。找到最小费用路径后,确定增广路径上的最小剩余容量flow,然后沿着增广路径更新流量和费用。

2401_84974736的博客 610

华为od 面试八股文_数据库_01_含答案

华为od 面试八股文_数据库_01_含答案

MISAYAONE的博客 2168

【Segment Anything Model】十(1):利用SAM做分类任务,方法二,不放过SAM强大特征提取能力,将SAM提取到的ImageEmbedding插入到其他cnn网络中

直接黏贴复制就好'''该类定义了VGG-16的基本结构。features: 代表VGG网络的主体部分,即所有的卷积层和池化层。avgpool: 是自适应平均池化层,将特征图大小调整为7x7。classifier: 是VGG网络的分类部分,由全连接层组成。_initialize_weights(): 初始化权重的方法。

cvxiayixiao的博客 3563

Poj 2195 Going Home【费用流Min_Cost_Max_flow】

Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21528   Accepted: 10870 Description On a grid map there are n little men and n houses. In each u

mengxiang000000 798

数学工具箱:Clarke与Park变换

本文详细解析了FOC(磁场定向控制)中的核心数学工具——Clarke变换与Park变换。首先阐述了坐标变换的必要性:将复杂的三相交流系统简化为直流系统,便于精确控制。Clarke变换将三相静止坐标系转换为两相静止坐标系,减少变量数量;Park变换进一步将两相静止坐标系转换为两相旋转坐标系,实现交流量到直流量的转换。文章提供了两种变换的数学公式、物理意义图解及C语言实现代码,并简要介绍了逆变换过程。这些变换为电机控制提供了关键的数学基础,后续将结合GD32F303的FPU特性进行优化实现。

汽车电子软件领域知识分享 182

有向图的最小费用最大流问题

有向图的最小费用最大流问题 预备知识:最大流问题,增广路算法。 问题说明:把物品从结点s(称为源点)运送至结点t(称为汇点),每条边上有一个二元组(x,y),x表示边的最大运送能力,y表示运送单位物品的花费。寻找总流量最大的前提下(或者把结点s上的物品全部运送至结点t),总费用最小的流。 算法思想: 1、在源点s处增加一个”超级源点S”,在汇点t处增加一个”超级汇点T”,其中S->s,T->t,且

zhihua_oba的博客 2174

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

最小费用最大流学习笔记

最近学了最小费用最大流,写一篇总结 前置知识: 最小费用的前提条件是最大流(本文提到的最大流算法为Dinic) 对于每条边来说,他们有着不一定相等的单位流量的价格,所以才有了"最小费用"这一条件 个人理解: 在普通的网络最大流中,常常使用类似while(bfs())while(flow=dinic(s,INF))maxflow+=flow;的方式求得结果 而在最小费用流中,原本的bf...

Object_的博客 367

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最小费用最大流

最小费用最大流(Minimum Cost Maximum Flow),简称费用流(MCMF),是最大流算法的一个分支。 现实生活中,如运输物资,管道输水等等不仅要考虑最大流量,有时还要考虑运输费用问题,费用流问题由此而生。在一个图中,每条边不仅有一个流量值,还有一个费用值,一般表示是在这条边上流一个单位的流量所需的费用,所以对于每一条边上的流量flow[i],实际花费为flow[i]*cost[

山外小楼夜听雨 1132

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大数据机器学习算法与计算机视觉应用02:线性规划

在零和博弈中,是概率和对应收益乘积的总和(收益给定),在最大流问题中,是通往终点所有流量的总和。卡马卡方法又被称作内部点方法,它寻找最优解的方法并非从可行域边界的一个顶点出发,而是从可行域内部的一个点开始。线性规划可以是没有边界的,但是一般都是可行的,否则目标函数无解。单纯形法从可行域的一个顶点开始,依次和附近的点比较,如果发现新的最大值,就进行迁移。在许多情况下,这个方程是没有精确解的,这个时候我们转而去计算最接近的解,也就是要求。的交点上,那么其中一个在最新的这一步出现的概率是多少呢?

qq_35933041的博客 1215

网络流之最小费用流

这是一道模板题。 给定一个图,每条边有容量和费用,使用每条边的单位流量需要支付特定的费用。给定源点1和汇点n,求图的最大流和最大流需要支付的最小费用。 输入格式: 第一行两个整数n,m,表示有n个点m条边。 从第二行开始的之后m行,每行四个整数s​i​​,t​i​​,c​i​​,w​i​​表示一条从s​i​​到t​i​​的边,容量为c​i​​,单位流量需要支...

weixin_44744037的博客 1153

费用流 MCMF算法

费用流模板 Luogu P3381 实现思路 邻接表保存时注意: 费用具有对称性, 流量具有守恒性 spfa()根据边的容量\流量\花费来找到增广路, 以及维护每点的入边pre[i],和判断是否还有增广路 EK()路程: 已经通过了spfa()确定了增广路,第一次while找到增广路可以通过的最大流量, 第二次while()更新网络 维护maxflow和maxFlowminCost...

_llc的博客 723

MincostMaxflow

#include using namespace std; struct E{ int from, to, cap, flow ,cost; }; int n, m, cost; vector edge; vector G[MAXN]; bool vis[MAXN]; int d[MAXN]; int p[MAXN]; int a[MAXN]; void read_graph(int f

QFWEMPIP的专栏 569

mysql最小费用最大流问题_最小费用最大流问题(示例代码)

费用流假设每条边除了有一个容量限制外,还有一个单位流量所需的费用(cost)。该网络中花费最小的最大流称为最小费用最大流,即总流量最大的情况下,总费用最小的流。和 Edmonds-Karp 算法类似,但每次用 Bellman-Ford 算法而非 BFS 找增广路。只要初始流是该流量下的最小费用可行流,每次增广后的新流都是新流量下的最小费用流。Bellman-Ford版如何用优先队列代替Bellma...

weixin_42501270的博客 560

hrbust 1716 双狙人【费用流Min_Cost_Max_flow】

双狙人 Time Limit: 1000 MS Memory Limit: 32768 K   Total Submit: 27(13 users) Total Accepted: 15(12 users) Rating:  Special Judge: No

mengxiang000000 571

最小费用最大流minCostMaxflow 模板

/* * Author : Echo * Email : 1666424499@qq.com * Description : * Created Time : 2017/9/25 16:52:26 * Last Modify : 2017/10/3 9:39:47 * File Name : MinCostMaxflow.cpp

yanga11ang的博客 4862

Poj 2516 Minimum Cost【费用流Min_Cost_Max_flow】

Minimum Cost Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 15826   Accepted: 5531 Description Dearboy, a goods victualer, now comes to a big problem, and

mengxiang000000 981

最小割与最大流(mincut & maxflow)

这里先介绍mincut和maxflow,为介绍Grabcut打下基础。Grabcut可以用在图像分割和文字二值化中。 1首先介绍Mincut问题。这部分内容主要翻译自[1],可以看原版理解的更深.由于个人没有看过中文教材,因此可能一些专业术语翻译的不太对,敬请见谅。一个有向图,并有一个源顶点(source vertex)和目标顶点(target vertex).边的权值为正,又称之为容量(capa...

PeaceInMind的博客 1万+

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 378
上一篇: POJ 2516 最小费用流构K次图
下一篇: 梅森素数 & 完美数
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值