想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410
                                     转载请注明出处:http://blog.csdn.net/wangjian8006

题目大意:可以简单描述为知道从i到j的汇率,问能不能赚钱

解题思路:问能不能赚钱,就是当i到i初始是t时,从i到i的最长路径能不能大于t,如果有这样的情况就是能赚钱

/*
floyd
Memory 196K
Time   47MS
*/
#include <iostream>
#include <string.h>
using namespace std;
#define MAXC 100
#define MAXV 50
double map[MAXV][MAXV];
int n,m;
void Input(){
char s[MAXV][MAXC],a[MAXC],b[MAXC];
int i,k,j;
double c;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
if(i==j)
map[i][j]=1;
else
map[i][i]=0;
for(i=1;i<=n;i++) scanf("%s",s[i]);
scanf("%d\n",&m);
for(i=1;i<=m;i++){
scanf("%s %lf %s",a,&c,b);
for(j=1;j<=n;j++)
if(!strcmp(s[j],a)) break;
for(k=1;k<=n;k++)
if(!strcmp(s[k],b)) break;
map[j][k]=c;
}
}
void floyd(){
int i,j,k;
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(map[i][k]*map[k][j]>map[i][j])
map[i][j]=map[i][k]*map[k][j];
}
int main(){
int cas=1,i;
while(scanf("%d\n",&n) && n){
Input();
floyd();
printf("Case %d: ",cas++);
for(i=1;i<=n;i++)
if(map[i][i]>1) break;
if(i>n) printf("No\n");
else printf("Yes\n");
}
return 0;
}

===========================================================================================

/*
bellman-ford
Memory 196K
Time   47MS
*/
#include <iostream>
#include <string.h>
using namespace std;
#define MAXC 100
#define MAXV 50
#define MAXM 10000
typedef struct{
int a,b;
double rate;
}Edge;
Edge edge[MAXM];
int n,m;
void Input(){
char s[MAXV][MAXC],a[MAXC],b[MAXC];
int i,k,j;
for(i=1;i<=n;i++) scanf("%s",s[i]);
scanf("%d\n",&m);
for(i=1;i<=m;i++){
scanf("%s %lf %s",a,&edge[i].rate,b);
for(j=1;j<=n;j++)
if(!strcmp(s[j],a)) break;
for(k=1;k<=n;k++)
if(!strcmp(s[k],b)) break;
edge[i].a=j;
edge[i].b=k;
}
}
int bellman_ford(){
int i,j;
double d[MAXV];
for(i=1;i<=n;i++) d[i]=0;
d[1]=1;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
if(d[edge[j].a]*edge[j].rate>d[edge[j].b])
d[edge[j].b]=d[edge[j].a]*edge[j].rate;
}
for(j=1;j<=m;j++)
if(d[edge[j].a]*edge[j].rate>d[edge[j].b])
return 1;
return 0;
}
int main(){
int cas=1,i;
while(scanf("%d\n",&n) && n){
Input();
printf("Case %d: ",cas++);
if(!bellman_ford()) printf("No\n");
else printf("Yes\n");
}
return 0;
}

poj2240 - Arbitrage相关推荐

  1. 一步一步深入理解Dijkstra算法

    先简单介绍一下最短路径: 最短路径是啥?就是一个带边值的图中从某一个顶点到另外一个顶点的最短路径. 官方定义:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径. 并且我们称路径上的第 ...

  2. I - Arbitrage POJ - 2240

    I - Arbitrage POJ - 2240 题意: 利用汇率之间的差价判断是否可以赚钱 思路: 利用 spfa 跑最长路(即松弛条件改为取更大的值),判断是否存在正环,存在则可以赚钱 #incl ...

  3. Arbitrage——判断正环Bellman-Ford/SPFA

    [题目描述] Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a c ...

  4. HDU 1217 Arbitrage (Floyd + SPFA判环)

    题目链接:HDU 1217 Arbitrage 简单的货币转换问题,给定多种货币,以及货币之间的汇率,问能否通过货币的转换实现收益. 例如: 1 US Dollar buys 0.5 British ...

  5. Arbitrage(判断正环 spfa写法)

    题目如下: Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a cu ...

  6. POJ 2240 Arbitrage(SPFA判正环)

    POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...

  7. I - Arbitrage(判断是否有无正环 II)

    题目描述 Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a cur ...

  8. HDOJ 题目1217 Arbitrage(最短路径,Floyd)

    NEW~ 关于举办计算机学院大学生程序设计竞赛(2014'11)的报名通知 Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Lim ...

  9. 统计套利 Statistical arbitrage

    统计套利  Statistical arbitrage 不是绝对意义上的套利, 而是统计意义上的套利,即该策略期望上可套利,但不 一定能套利. From Wikipedia, the free enc ...

最新文章

  1. 打开和关闭mysql服务的两种方法
  2. Java定义一维数组从键盘赋值
  3. MSRCRGIMP(基于GIMP版本的多尺度Retinex)
  4. hibernate 基础方法(二)【相关配置详解】
  5. 《Android 应用案例开发大全(第3版)》——第1.2节掀起Android的盖头来
  6. php 股票数据 sina,使用Sina API获取新浪财经的证券股票数据接口(时价 K线等)
  7. ArcFace算法笔记
  8. 最好用的WIN7WIN10激活工具
  9. 手势识别(一)--手势基本概念和ChaLearn Gesture Challenge
  10. 求生之路无限火力服务器,《求生之路》终于数3了?还没开测就已经卖疯了……...
  11. Directx11教程(58) 鼠标控制摄像机
  12. 站内文案编辑seo关键词优化技巧
  13. Linux基本操作1
  14. 中国分电器及点火线圈市场现状研究分析与发展前景预测报告(2022)
  15. qt QLabel设置行间距
  16. 在线聊天室的消息单聊的实现——springboot整合WebSocket(二)
  17. Win98 is gone
  18. 2022年备考考研英语二作文
  19. windows7下安装ACHI驱动
  20. 武汉计算机学校排名及分数线,湖北省专科学校排名及分数线2019

热门文章

  1. javaSE编写的小游戏打包成可执行文件
  2. c/c++语言中函数参数传递的三种方式——徐吉平
  3. CLC(ClearCarry Flag)
  4. 解读华为的千手观音文化
  5. hive启动警告:Establishing SSL connection without server's identity verification is not recommended
  6. 【笔记篇】12订单履约系统——之《实战供应链》
  7. 第五十二章 SQL函数 DEGREES
  8. 简约之道:极简风格界面设计的起源
  9. 什么是工作流管理系统
  10. vis-timeline时间线