poj1860 兑换货币(bellman ford判断正环)

本文介绍了一种通过Bellman算法来解决货币兑换中是否存在盈利正环的问题。利用给定的货币兑换图,通过n-1次松弛操作检测图中是否包含正权环,进而判断从初始货币出发是否存在一种交易路径使得最终金额大于初始金额。

传送门:点击打开链接

题目大意:一个城市有n种货币,m个货币交换点,你有v的钱,每个交换点只能交换两种货币,(A换B或者B换A),每一次交换都有独特的汇率和手续费,问你存不存在一种换法使原来的钱更多。

思路:一开始以为一个地方只能用一次,感觉好像有点难,后来发现自己读错题了,其实只要判断给你的这幅图存不存在正环就可以了,用dis【】表示某种货币的数量,然后bellman判断正环就可以了。(题目里强调结尾一定要原来的货币,但其实这是废话,因为是以原来的货币为起点的,所以你换出去了一定换的回来),正环指的是跑一圈w变大的环。

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<math.h>
#include<cmath>
#include<time.h>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<algorithm>
#include<numeric>
using namespace std;
int n,m,s,num;
const int maxn=110;
double V,dis[maxn];
struct edge{
	int u,v;
	double cost,w;
}e[220];
void addv(int a,int b,double ra,double ca){
	e[num].u=a;
	e[num].v=b;
	e[num].cost=ca;
	e[num++].w=ra;
}
bool bellman(){
	dis[s]=V;
	for(int i=1;i<n;i++){//松弛n-1次  
	bool flag=false;
		for(int j=0;j<num;j++){
			int u=e[j].u;
			int v=e[j].v;
			if(dis[v]<(dis[u]-e[j].cost)*e[j].w){
				dis[v]=(dis[u]-e[j].cost)*e[j].w;
				flag=true;
			}
		}
		if(!flag)return false;// 如果n-1次都无法松弛   那肯定不存在正环 
	}
	for(int i=0;i<num;i++){
		if(dis[e[i].v]<(dis[e[i].u]-e[i].cost)*e[i].w)//第n次若能松弛  说明存在正环 
		return true; 
	}
	return false;
}
int main(){
	while(scanf("%d%d%d%lf",&n,&m,&s,&V)!=EOF){
	num=0;
	sizeof(dis,0,sizeof(dis));

	while(m--){
		int a,b;
		double ra,ca,rb,cb;
		scanf("%d%d%lf%lf%lf%lf",&a,&b,&ra,&ca,&rb,&cb);
		addv(a,b,ra,ca);
		addv(b,a,rb,cb);
	}
	if(bellman())printf("YES\n");
	else printf("NO\n");
	}
}

转载于:https://www.cnblogs.com/mountaink/p/9536735.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值