感觉最短路好神奇呀,刚开始我都 没想到用最短路

题目:http://poj.org/problem?id=1860

题意:有多种从a到b的汇率,在你汇钱的过程中还需要支付手续费,那么你所得的钱是 money=(nowmoney-手续费)*rate,现在问你有v钱,从s开始出发交换钱能不能赚钱

题解:这题其实是用bellman_ford的思想,通过n-1次松弛后,如果还能增加,就说明有环 可以使金钱数不断增加。

  1. #include <iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<stack>
  6. #include<queue>
  7. #include<cmath>
  8. #include<algorithm>
  9. using namespace std;
  10. int cnt;
  11. double dis[];
  12. double n,m,v;
  13. struct node
  14. {
  15. int u,v,next;
  16. double r,c;
  17. }edge[];
  18.  
  19. void add(int u,int v,double r,double c)
  20. {
  21. edge[cnt].u=u; edge[cnt].v=v;
  22. edge[cnt].r=r; edge[cnt++].c=c;
  23. }
  24. int bellman_ford(int s)
  25. {
  26. int i,j;
  27. for(i=; i<n; i++)
  28. dis[i]=;
  29. dis[s]=v; //跟最短路不一样,到自己的距离是原来的钱数
  30. for(i=; i<n-; i++)
  31. for(j=; j<cnt; j++)
  32. {
  33. if(dis[edge[j].v]<(dis[edge[j].u]-edge[j].c)*edge[j].r)//逆用最短路
  34. dis[edge[j].v]=(dis[edge[j].u]-edge[j].c)*edge[j].r;
  35. }
  36. for(j=; j<cnt; j++)
  37. if(dis[edge[j].v]<(dis[edge[j].u]-edge[j].c)*edge[j].r)//如果成立说明有能使钱数增加的环
  38. return ;
  39. return ;
  40. }
  41. int main()
  42. {
  43. int s,i,j,a,b;
  44. double rab,cab,rba,cba;
  45. scanf("%lf%lf%d%lf",&n,&m,&s,&v);
  46. cnt=;
  47. for(i=; i<m; i++)
  48. {
  49. scanf("%d%d%lf%lf%lf%lf",&a,&b,&rab,&cab,&rba,&cba);
  50. add(a,b,rab,cab);
  51. add(b,a,rba,cba);
  52. }
  53. if(bellman_ford(s)) printf("YES\n");
  54. else printf("NO\n");
  55. return ;
  56. }

这个博客:http://blog.csdn.net/wangjian8006/article/details/7871753

就是到s的距离大于v了,就是YES。

有spfa的代码,这个应该理论上更省时间

poj 1860 Currency Exchange (最短路bellman_ford思想找正权环 最长路)的更多相关文章

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

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

  2. POJ 1860 Currency Exchange (最短路)

    Currency Exchange Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u S ...

  3. POJ 1860 Currency Exchange 最短路 难度:0

    http://poj.org/problem?id=1860 #include <cstdio> //#include <queue> //#include <deque ...

  4. 最短路(Bellman_Ford) POJ 1860 Currency Exchange

    题目传送门 /* 最短路(Bellman_Ford):求负环的思路,但是反过来用,即找正环 详细解释:http://blog.csdn.net/lyy289065406/article/details ...

  5. POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)

    POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环) Description Several currency ...

  6. POJ 1860 Currency Exchange + 2240 Arbitrage + 3259 Wormholes 解题报告

    三道题都是考察最短路算法的判环.其中1860和2240判断正环,3259判断负环. 难度都不大,可以使用Bellman-ford算法,或者SPFA算法.也有用弗洛伊德算法的,笔者还不会SF-_-…… ...

  7. POJ 1860 Currency Exchange【bellman_ford判断是否有正环——基础入门】

    链接: http://poj.org/problem?id=1860 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  8. POJ 1860 Currency Exchange (最短路)

    Currency Exchange Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 60000/30000K (Java/Other) T ...

  9. POJ 1860——Currency Exchange——————【最短路、SPFA判正环】

    Currency Exchange Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. cocos3.10 使用cocostudio 回调特性 c++版本说明

    cocos3.10 使用cocostudio 回调特性 c++版本说明 好久没捣鼓cocos2dx了,又拿起来玩玩,看着版本一次次的升级,真的好快,今天用cocos3.10版本测试下时间特性功能,跟着 ...

  2. Node.js 【Stream之笔记】

    从Node.js API文档中可知, 'A stream is an abstract interface implemented by various objects in Node. For ex ...

  3. [旧博客]QQ旋风加速漏洞

    漏洞是这样的,用开通QQ会员的账号登录QQ旋风,添加要下载的任务,启动加速后,注销,登录lixian.qq.com 删除刚才添加的离线任务,这时QQ旋风还是在加速那个任务.而你又可以登录QQ旋风添加其 ...

  4. what is the “handover” and "soft handover" in mobile communication system?

    Handover: 切换,属于移动通信网络中的技术术语. 所谓切换,就是指当移动台在通话过程中从一个基站覆盖区移动到另一个基站覆盖区,或者由于外界干扰而造成通话质量下降时,必须改变原有的话音信道而转接 ...

  5. Speech Patterns (string)

    People often have a preference among synonyms of the same word. For example, some may prefer "t ...

  6. MYsqli 绑定插入与查询实例

    <?php $conn = new mysqli('localhost','root','','orders'); //连接 $prepare = "insert into t100 ...

  7. Hibernate从入门到精通(六)一对一双向关联映射

    在上次的博文Hibernate从入门到精通(五)一对一单向关联映射中我们讲解了一下一对一单向关联映射,这次我们继续讲解一下与之对应的一对一双向关联映射. 一对一双向关联 与一对一单向关联映射所不同的的 ...

  8. Increase SharePoint Execution Timeout

    <system.web> <compilation batch="false" batchTimeout="600" maxBatchSize ...

  9. [SQL SERVER系列]存储过程,游标和触发器实例[原创]

    自己写的存储过程与游标结合使用的实例,与大家分享,也供自己查阅,仅供参考: --使用游标循环处理,删除重复的记录 declare @UserID int ) ) declare @UnitFlag i ...

  10. UITextField监听文字输入事件

    [textField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditin ...