POJ 2240 Arbitrage
这一题是一道比较好的最短路的变型题,大致思路是求得本身到本身的最短路,注意这一题路与路是相乘的关系,用floy的算法即可。
AC code:
1 #include <iostream> 2 #include <string> 3 #include <map> 4 #define INF 10000 5 using namespace std; 6 7 int n, m; //货币种类与兑换方式 8 9 map<string, int> v; //利用c++提供的模板库来为数据读入带来方便 10 11 double dis[100][100]; 12 char str[50], str1[50], str2[50]; 13 14 void init() 15 { 16 double rate; 17 //initial 18 for (int i = 0; i < 100; i++) 19 { 20 for (int j = 0; j < 100; j++) 21 { 22 dis[i][j] = INF; 23 } 24 } 25 //初始化时将自己到本身的兑换值默认为1 26 for (int i = 1; i <= n; i++) 27 { 28 cin >> str; 29 v[str] = i; 30 dis[i][i] = 1; 31 } 32 scanf("%d", &m); 33 //利用c++模板库让英文名字跟序号对应起来 34 for (int i = 0; i < m; i++) 35 { 36 cin >> str1 >> rate >> str2; 37 dis[v[str1]][v[str2]] = rate; 38 } 39 } 40 void floyd() 41 { 42 for (int k = 1; k <= n; k++) 43 { 44 for (int i = 1; i <= n ; i++) 45 { 46 for (int j = 1 ; j <= n; j++) 47 { 48 if(dis[i][j] < dis[i][k] * dis[k][j]) 49 dis[i][j] = dis[i][k] * dis[k][j]; 50 } 51 } 52 } 53 } 54 int main() 55 { 56 int number = 1; 57 while(scanf("%d", &n) != EOF && n) 58 { 59 60 init(); 61 floyd(); 62 int flag = false; 63 //一旦找出一个盈利的即可输出 64 for (int i = 1; i <= n; i++) 65 { 66 if(dis[i][i] > 1) 67 flag = true; 68 break; 69 } 70 if(flag) 71 cout << "Case " << number << ": Yes"<<endl; 72 else 73 cout << "Case " << number << ": No" <<endl; 74 number++; 75 } 76 return 0; 77 }
转载于:https://www.cnblogs.com/gaigai/archive/2012/04/13/2446298.html
POJ 2240 Arbitrage相关推荐
- POJ 2240 Arbitrage(SPFA判正环)
POJ 2240 Arbitrage 题目大意 套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位.例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美 ...
- poj 2240 Arbitrage (Floyd)
链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...
- poj 2240 Arbitrage (floyd 变形)
http://poj.org/problem?id=2240 floyd 的变形 题意 有n个货币,他们的交换情况m个 例如: 3 USDollar BritishPound FrenchFranc ...
- POJ 2240 Arbitrage(判正环)
http://poj.org/problem?id=2240 题意: 货币兑换,判断最否是否能获利. 思路: 又是货币兑换题,Belloman-ford和floyd算法都可以的. 1 #include ...
- poj 2240 Arbitrage(bellman-ford spfa 判断正环)
http://poj.org/problem?id=2240 基本和poj 1860相同 只是把单点变成了任意点 做完1860再做这题就完全把思路套上就过了 做完才发现网上的题解都用的是floyd 不 ...
- POJ 2240 Arbitrage(最短路 套汇)
题意 给你n种币种之间的汇率关系 推断是否能形成套汇现象 即某币种多次换为其他币种再换回来结果比原来多 基础的最短路 仅仅是加号换为了乘号 #include<cstdio> #in ...
- POJ 2240 Arbitrage Bellman_ford 判读是否存在正环
和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的. #include<stdio.h> ...
- POJ 2240 Arbitrage 解题报告
Question Link 单向图,就是bellman-ford求正环,但是应该预设起点的钱的值为1,或者任意正数.起点暴力,枚举.好吧(其实我是真的傻了). 傻傻的代码 #include<io ...
- I - Arbitrage POJ - 2240
I - Arbitrage POJ - 2240 题意: 利用汇率之间的差价判断是否可以赚钱 思路: 利用 spfa 跑最长路(即松弛条件改为取更大的值),判断是否存在正环,存在则可以赚钱 #incl ...
最新文章
- “AI明星”第四范式C轮融资超10亿元,估值约12亿美元
- python class类_python中的class(类)
- MySQL: Starting MySQL….. ERROR! The server quit without updating PID file解决办法
- OpenCV、OpenCL、OpenGL、OpenPCL
- ups计算软件_ups不间断电源系统分类及作用
- Atitit.ati orm的设计and架构总结 适用于java c# php版
- 在ASP.NET Core中使用brotli压缩
- 超级管理器Android,超级文件管理器app
- linux鼠标回到桌面图标,Ubuntu16_18建立返回桌面、显示桌面的快捷图标的特殊方法...
- 阿里推迟招聘;大疆因腐败损失 10 亿;ofo 两创始人消失? | 极客头条
- 那些想替代 C 的语言怎么样?Go、Rust、C++ 和 Zig 生产力对比
- C语言从字符串中提取数字
- 阳光牧场助手 阳光牧场外挂
- 用Java实现并查集
- python设计报告的前言怎么写_前 言_Python语言程序设计_红黑联盟读书频道
- 读取nginx的conf文件_nginx.conf配置文件
- “碳排放”挑战当前,维谛技术(Vertiv)带来节能改造最佳实践
- 一文带你理顺C++中的const
- 【JavaBeans中的属性!】
- DAY 9 | 自学前端第九天