POJ 1860 Currency Exchange
题目大意:假設有A,B兩種貨幣,要將A換成B,須透過匯率Rab和手續費Cab,因此實際得到B貨幣=(A-Cab)*Rab元。
第一行輸入N, M, S, V,N表示共有N種貨幣(1<=N<=100),M表示底下有M行,每一行有六個數字A,B,Rab,Cab,Rba,Cab,Rab表示A換成B的匯率,Cab表示A換成B需要扣除的手續費,Rba和Cba同理。現在Nick有第S種貨幣V元,題目問Nick透過不斷交換貨幣,然後最後換回第S種貨幣的時候能否大於V元?
解题思路:Bellman-ford改一改,只要能够无限松弛,就符合题意(我这里优化了一下Bellman-ford,就是不能松弛了,就退出松弛循环(这道题可以直接判断不行了), 感觉有点像冒泡的优化
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #define MAXVERTEXNUM 500 5 #define INF 1000000 6 using namespace std; 7 8 struct E 9 { 10 int a, b; 11 double exchange_currency, tips; 12 }Edge[MAXVERTEXNUM]; 13 int Nv, Ne, s, num = 0; 14 double org, dist[MAXVERTEXNUM]; 15 16 bool Bellman_Ford() 17 { 18 for (int i = 1; i < Nv; ++i) 19 { 20 bool flag = false; 21 for (int j = 0; j < num; ++j) 22 { 23 if (dist[Edge[j].b] < (dist[Edge[j].a] - Edge[j].tips) * Edge[j].exchange_currency) 24 { 25 dist[Edge[j].b] = (dist[Edge[j].a] - Edge[j].tips) * Edge[j].exchange_currency; 26 flag = true; 27 } 28 } 29 if (!flag) 30 return false;//写break还要快一些,黑人问号??? 31 } 32 33 for (int i = 0; i < num; ++i) 34 if (dist[Edge[i].b] < (dist[Edge[i].a] - Edge[i].tips) * Edge[i].exchange_currency) 35 return true; 36 37 return false; 38 } 39 40 int main() 41 { 42 ios::sync_with_stdio(false); 43 44 cin >> Nv >> Ne >> s >> org; 45 memset(dist, 0, sizeof(dist)); 46 dist[s] = org; 47 //init 48 49 for (int i = 1; i <= Ne; ++i) 50 { 51 int V1, V2; 52 double t1, t2, t3, t4; 53 cin >> V1 >> V2 >> t1 >> t2 >> t3 >> t4; 54 Edge[num].a = V1, Edge[num].b = V2; 55 Edge[num].exchange_currency = t1; 56 Edge[num++].tips = t2; 57 Edge[num].a = V2, Edge[num].b = V1; 58 Edge[num].exchange_currency = t3; 59 Edge[num++].tips = t4; 60 } 61 62 if (Bellman_Ford()) 63 cout << "YES" << endl; 64 else 65 cout << "NO" << endl; 66 67 return 0; 68 }
转载于:https://www.cnblogs.com/ducklu/p/9231563.html
POJ 1860 Currency Exchange相关推荐
- POJ 1860 Currency Exchange 最短路+负环
原题链接:http://poj.org/problem?id=1860 Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Tota ...
- poj 1860 Currency Exchange (SPFA、正权回路 bellman-ford)
链接:poj 1860 题意:给定n中货币.以及它们之间的税率.A货币转化为B货币的公式为 B=(V-Cab)*Rab,当中V为A的货币量, 求货币S通过若干此转换,再转换为原本的货币时是否会添加 分 ...
- poj 1860 Currency Exchange (最短路bellman_ford思想找正权环 最长路)
感觉最短路好神奇呀,刚开始我都 没想到用最短路 题目:http://poj.org/problem?id=1860 题意:有多种从a到b的汇率,在你汇钱的过程中还需要支付手续费,那么你所得的钱是 mo ...
- POJ 1860 Currency Exchange (SPFA松弛)
题目链接:http://poj.org/problem?id=1860 题意是给你n种货币,下面m种交换的方式,拥有第s种货币V元.问你最后经过任意转换可不可能有升值.下面给你货币u和货币v,r1是u ...
- POJ 1860 Currency Exchange
英语太渣读了半天,理解了题意就好办了--Bellman_ford算法.在n-1次松弛后,如果依然存在满足松弛的情况返回1.说简单点就是判读是否存在正环. #include<stdio.h> ...
- POJ 1860 Currency Exchange (Bellman-Ford)
题目大意:有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.39 ...
- POJ 1860: Currency Exchange 【SPFA】
套汇问题,从源点做SPFA,如果有一个点入队次数大于v次(v表示点的个数)则图中存在负权回路,能够套汇,如果不存在负权回路,则判断下源点到自身的最长路是否大于自身,使用SPFA时松弛操作需要做调整 # ...
- *【POJ - 1860】Currency Exchange (单源最长路---Bellman_Ford算法判正环)
题干: Description Several currency exchange points are working in our city. Let us suppose that each p ...
- Currency Exchange (POJ 1860)
Currency Exchange 思路:用spfa来找正环,只要存在一个正环(cnt >= n),那么走这个圈无穷次后资产一定正无穷,因为路是双向的,所以一定可以返回原来的货币,正无穷再怎么亏 ...
最新文章
- 基于 OpenYurt EdgeX Foundry 的云边端一体化解决方案
- 8086地址传送指令LEA
- c++用new求数组中n个数的和_在C++中实现任意大小数组的定义方法
- hadoop2.8配置_Hadoop2.8.2安装与配置(单机)
- remmima 不能保存_Vue项目实现表单登录页保存账号和密码到cookie功能_婳祎_前端开发者...
- Logistic混沌序列加密
- Android API 指南
- python基础安装第三方(十三)
- 发布一个 host 管理插件
- JavaScript和JQuery获取DIV的值
- 从全息投影到全息平台,必须克服7个障碍
- 77GHz毫米波雷达快速chirp信号技术(五):CAPON Beamforming
- 出现 Unexpected token T in JSON at position 0 ,at JSON.parse (<anonymous>) 的解决方法
- 依据数据简单分析,发掘潜在客户
- 我是CTO,我为CEO吹过的牛逼买单!
- 腾讯研究院院长司晓:互联网大脑的人文侧面
- Java中随机数的产生
- 技术干货|昇思MindSpore 1.5版本中的亲和算法库——MindSpore Boost
- Arduino使用水位传感器
- 都说Dapper性能好,突然就遇到个坑,还是个性能问题
热门文章
- python练习册 每天一个小程序 第0013题
- 八. 输入输出(IO)操作3.面向字符的输出流
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
- sencha touch 组件选择器getCmp和ComponentQuery.query()的效率解析
- 如何判断应用已经安装,如何判断Service,BroastCastReceiver,ContentProvider是否存在...
- SQL Azure(十) SQL Azure Data Sync数据同步功能(上)
- 查看文件more、less
- 解决英文版Windows 2003中文乱码问题
- cnn stride and padding_卷积神经网络(CNN) 第 4 课(上)
- hdu5108枚举因子求最小的m