此题可以用bellman-ford算法来求解。bellman-ford算法是求解最短路径,此题是求解
“最大路径”,条件与松弛条件相反,因此求的是无限松弛的最大正权路径,可以用bellman-ford算法去解题。
此题中的“最大路径”其实就是求改变点数下是否有增加更新点。

我们用dis[i]来表示第i种货币的钱数。
我们求最大那么需将dis[i]初始话为0,再用bellman-ford算法来进行求解是否有增加的更新点。
假设我们从u点到v点(这里我们将每种钱币看成图中的一点)
则需求:
dis[v]<(dis[s]-Cs->v)*Rs->v

如果结果是true,则dis[v]=(dis[s]-Cs->v)*Rs->v,用flag表示是否更新的话,那么返回的flag就是true,否则返回false。

此题参考了网上大神的思想

代码:

#include <iostream>
#include <string.h>
using namespace std;
int N;//货币种类
int M;//交换点次数
int S;//货币持有类型
double V;//货币持有此类型的数量
//定义交换货币的结构体
struct{int a;//a货币int b;//b货币double C;//货币交换所需付的押金double R;//货币交换的汇率}exec[202];
int all; //边数
double dis[101];//N不超过100,各种货币的钱数。
bool bellmanford()
{//初始化dis[exec[all].a-exec[all].C)*exec[all].Rmemset(dis,0,sizeof(dis));dis[S]=V;//因为输入时货币S是有钱数的。bool flag=false;for(int i=1;i<=N-1;i++){for(int j=0;j<all;j++){if(dis[exec[j].b]<(dis[exec[j].a]-exec[j].C)*exec[j].R){dis[exec[j].b]=(dis[exec[j].a]-exec[j].C)*exec[j].R;flag=true;}}if(!flag)break;}for(int j=0;j<all;j++)if(dis[exec[j].b]<(dis[exec[j].a]-exec[j].C)*exec[j].R)return true;return false;}
int main()
{//定义临时变量int a;int b;double rab;double cab;double rba;double cba;while(cin>>N>>M>>S>>V){all=0;for(int i=0;i<M;i++){cin>>a>>b>>rab>>cab>>rba>>cba;exec[all].a=a;exec[all].b=b;exec[all].R=rab;exec[all++].C=cab;exec[all].a=b;exec[all].b=a;exec[all].R=rba;exec[all++].C=cba;}if(bellmanford())cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;
}

Currency Exchange相关推荐

  1. php exchange,PHP SDK for digital currency exchange

    PHP Easy Exchange SDK PHP SDK for digital currency exchange,include binance, okex, huobi pro etc---好 ...

  2. Currency Exchange——最短路Bellman-Ford算法

    [题目描述] Several currency exchange points are working in our city. Let us suppose that each point spec ...

  3. *【POJ - 1860】Currency Exchange (单源最长路---Bellman_Ford算法判正环)

    题干: Description Several currency exchange points are working in our city. Let us suppose that each p ...

  4. Currency Exchange (POJ 1860)

    Currency Exchange 思路:用spfa来找正环,只要存在一个正环(cnt >= n),那么走这个圈无穷次后资产一定正无穷,因为路是双向的,所以一定可以返回原来的货币,正无穷再怎么亏 ...

  5. Currency Exchange(判断有无正环)

    题目描述 Several currency exchange points are working in our city. Let us suppose that each point specia ...

  6. POJ 1860 Currency Exchange 最短路+负环

    原题链接:http://poj.org/problem?id=1860 Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Tota ...

  7. Currency Exchange (SPFA)

    点击打开链接 Problem Description Several currency exchange points are working in our city. Let us suppose ...

  8. POJ 1860 Currency Exchange

    英语太渣读了半天,理解了题意就好办了--Bellman_ford算法.在n-1次松弛后,如果依然存在满足松弛的情况返回1.说简单点就是判读是否存在正环. #include<stdio.h> ...

  9. 【最短路】 ZOJ 1544 Currency Exchange 推断负圈

    给出 N 种货币 M 条兑换关系 開始时全部的货币S 和有X 块钱 接下来M条关系 A B W1 W2 W3 W4 表示 A->B 所需的手续费为W2块钱  汇率为W1 B->A 所需的手 ...

  10. POJ1680 Currency Exchange SPFA判正环

    转载来源:優YoU  http://user.qzone.qq.com/289065406/blog/1299337940 提示:关键在于反向利用Bellman-Ford算法 题目大意 有多种汇币,汇 ...

最新文章

  1. Filter(过滤器)
  2. ORACLE 数据的逻辑组成
  3. javascript定时器及Date对象
  4. java空指针处理例子_被同事的空指针硬生生的折磨了好久,终于学会了如何处理空指针...
  5. 关于如何提高SQL Server Compact的查询性能
  6. java技术系列(一) Enum
  7. 浅谈web开发以及django的安装和入门
  8. 2008年度一个下岗程序员的真实经历
  9. 13.C++-静态成员变量、静态成员函数
  10. 正式宣布DXBC2GLSL,HLSL字节码到GLSL的编译器
  11. vmware linux 编译内核,VMWare编译linux内核的注意事项
  12. 3-26 C++ 学习
  13. FM1288通过串口配置
  14. Linux设备模型(总线、设备、驱动程序和类)
  15. JVM监控及诊断工具GUI篇之JConsole
  16. 传奇衣服、翅膀、武器、怪物、NPC等外观代码计算方法与公式
  17. 在线uml画图工具网站
  18. 蓝牙BT射频测试(转发)
  19. 搜索引擎关键词优化可以怎么做?
  20. 3轴陀螺仪和6轴陀螺仪_陀螺仪和为IBM ThinkPad重新映射Windows按钮

热门文章

  1. 2017.10.28 排序 思考记录
  2. 2017.4.26 组合数问题 思考记录
  3. 2017.3.29 lis 失败总结
  4. 【英语学习】【WOTD】magniloquent 释义/词源/示例
  5. 两空间异面直线公垂线及交点坐标的求解过程
  6. C#下实现的K-Means优化[1]-「离群点检测」
  7. 合肥python招聘_2020年合肥京东方招聘官网招聘-合肥京东方招聘官网招聘求职信息-拉勾招聘...
  8. 搭建Cent OS7服务器时需要注意的一些问题
  9. nfs需要开通什么端口_开通微信小程序直播需要准备什么?
  10. UE4 Blueprint编译过程