汇率转换问题: 怎么样才能套利

可以用Floyd算法:

#include<bits/stdc++.h>
using namespace std; double m1[][];
int main()
{
int n,m;
map<string,int>ma;int cas=;
while(scanf("%d",&n)==,n)
{
string ss;
for(int i=;i<=n;i++)
{
cin>>ss;
ma[ss]=i; } string s1,s2;double rate;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(i==j)m1[i][j]=;
else m1[i][j]=; }
scanf("%d",&m);
for(int i=;i<=m;i++)
{
cin>>s1>>rate>>s2;
m1[ ma[s1] ][ ma[s2] ]=rate;
} for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int k=;k<=n;k++)
{
if(m1[j][k]<m1[j][i]*m1[i][k])
m1[j][k]=m1[j][i]*m1[i][k]; }
int ok=;
for(int i=;i<=n;i++)
if(m1[i][i]>){ok=;break;} printf("Case %d: %s\n",cas++,ok?"Yes":"No"); } return ;
}

string用cin输入  cin和scanf都会自动略过空格和空行

spfa算法

#include <stdio.h>
#include <iostream>
#include <cstring>
#include <map>
#include <queue>
#include <algorithm>
using namespace std; const int L = ;
const double inf = ;
map<string,int> mat;
int n,m;
char str[],s1[],s2[];
double trip[][],dis[]; int SPFA(int src)
{
queue<int> Q;
int vis[],i;
int num[];
for(i = ; i<=n; i++)
vis[i] = dis[i] = num[i] = ;
while(!Q.empty())
Q.pop();
dis[src] = 1.0;
vis[src] = ;
Q.push(src);
while(!Q.empty())
{
int now = Q.front();
Q.pop();
vis[now] = ;
for(i = ; i<=n; i++)
{
if(dis[now]*trip[now][i]>dis[i])
{
dis[i] = dis[now]*trip[now][i];
if(dis[src]>1.0)
return ;
if(!vis[i])
{
vis[i] = ;
Q.push(i);
}
}
}
}
return ;
} int main()
{
int i,j,cas = ;
double w;
while(~scanf("%d",&n),n)
{
mat.clear();
for(i = ; i<=n; i++)
for(j = ; j<=n; j++)
trip[i][j] = (i==j)?1.0:;
for(i = ; i<=n; i++)
{
scanf("%s",str);
mat[str] = i;
}
scanf("%d",&m);
while(m--)
{
scanf("%s%lf%s",s1,&w,s2);
trip[mat[s1]][mat[s2]] = w;
}
int flag = ;
for(i = ; i<=n; i++)
{
if(SPFA(i))
{
flag = ;
break;
}
}
printf("Case %d: %s\n",cas++,flag?"Yes":"No");
} return ;
}

Arbitrage HDU1217的更多相关文章

  1. hdu1217 Arbitrage

    Problem Description Arbitrage is the use of discrepancies in currency exchange rates to transform on ...

  2. 【floyed】【HDU1217】【Arbitrage】

    题目大意: 给你几种货币,以及几种汇率关系,问是否存在套利的可能? 思路: 初步想法:图上存在一个环的路径上权值相乘大于1.... 再者:该如何找到图上所有环呢.... 好吧 经过鸟神 和 况神的指点 ...

  3. HDU1217:Arbitrage(SPFA)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意 在每种钱币间进行各种交换,最后换回自己如果能赚,那么就Yes,否则No 注意应为有负权 ...

  4. POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)

    POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...

  5. poj 2240 Arbitrage

    Time Limit: 1000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u   Java class name ...

  6. UVa 104 - Arbitrage(Floyd动态规划)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  7. Arbitrage(bellman_ford)

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16652   Accepted: 7004 Descri ...

  8. 最短路(Floyd_Warshall) POJ 2240 Arbitrage

    题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...

  9. poj-------(2240)Arbitrage(最短路)

    Arbitrage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15640   Accepted: 6563 Descri ...

随机推荐

  1. Composer 安装和使用

    1.linux下安装 curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer ...

  2. linq to xml 简单的增、删、改、查、保存xml文件操作

    using System; using System.Collections; using System.Configuration; using System.Data; using System. ...

  3. Nginx 防盗链配置

    防盗链一般都是流媒体配置 location ~* \.(jpg|jpeg|png|bmg|swf|mp4|mp4|mmf|zip|rar|swf|flv)$ { // 对jpg|jpeg|png|bm ...

  4. 堆叠窗口QStackedWidget

    经常将QStackedWidget和QListWidget或者QListView搭配使用 import sys from PyQt5.QtWidgets import QApplication, QW ...

  5. Git操作学习笔记

    根据廖雪峰老师git教程学习整理 这里需要辨析一下概念.Github是代码托管平台,是协作的工具;而Git是版本控制工具.Git不需要联网,在本机就可以使用 集中式版本控制系统与分布式版本控制系统 S ...

  6. uboot 如何向内核传递参数

    a.uboot 向内核传递的参数有两种类型 1.一个是bootargs 2.一个是环境参数, 而环境参数的设置靠的是 Y:\junda\JdLinuxApp\A1801_uboot\source\u- ...

  7. 【转贴】Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)

    原文地址; http://www.ha97.com/5359.html PS:昨天一同事遇到mysql 5.5中文乱码问题,找我解决.解决了,有个细节问题网上没人说,我就总结一下. 一.登录MySQL ...

  8. Properties文件工具类的使用--获取所有的键值、删除键、更新键等操作

    有时候我们希望处理properties文件,properties文件是键值对的文件形式,我们可以借助Properties类操作. 工具类如下:(代码中日志采用了slf4j日志) package cn. ...

  9. Linux Kernel 代码艺术——编译时断言【转】

    转自:http://www.cnblogs.com/hazir/p/static_assert_macro.html 本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码 ...

  10. Python3学习笔记23-StringIO和BytesIO

    StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即 ...