Arbitrage HDU1217
汇率转换问题: 怎么样才能套利
可以用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的更多相关文章
- hdu1217 Arbitrage
Problem Description Arbitrage is the use of discrepancies in currency exchange rates to transform on ...
- 【floyed】【HDU1217】【Arbitrage】
题目大意: 给你几种货币,以及几种汇率关系,问是否存在套利的可能? 思路: 初步想法:图上存在一个环的路径上权值相乘大于1.... 再者:该如何找到图上所有环呢.... 好吧 经过鸟神 和 况神的指点 ...
- HDU1217:Arbitrage(SPFA)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意 在每种钱币间进行各种交换,最后换回自己如果能赚,那么就Yes,否则No 注意应为有负权 ...
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...
- poj 2240 Arbitrage
Time Limit: 1000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java class name ...
- UVa 104 - Arbitrage(Floyd动态规划)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- Arbitrage(bellman_ford)
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16652 Accepted: 7004 Descri ...
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...
- poj-------(2240)Arbitrage(最短路)
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15640 Accepted: 6563 Descri ...
随机推荐
- buildroot构建项目(一)---buildroot介绍
1.1 什么是buildroot Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和编译Li ...
- luogu P2511 [HAOI2008]木棍分割
传送门 第一问是一道经典的二分,二分答案\(ans\),然后从前往后扫,判断要分成几段救星了 第二问设\(f_{i,j}\)表示前\(i\)个数分成\(j\)段,每段之和不超过第一问答案的方案,转移就 ...
- IE8以下浏览器设置Title的问题
ie8不支持网页title的如下写法 $('title').text('标题'); $('title').html('标题'); 在ie8中,正确写法: document.title = &quo ...
- 5、利用两个栈实现队列,完成push和pop操作
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 1.一个栈用来做push 2.另一个栈用来做pop 3.将push操作的栈的元素放入另一个栈中, ...
- tidb 架构 ~Tidb学习系列(2)
一 简介:咱们今天来学习导入数据篇 二 导入数据测试 1 工具 mysqldumper loader 2 下载tidb企业版工具 wget http://download.ping ...
- Android 中查看内存的使用情况集常用adb命令
http://blog.csdn.net/bigconvience/article/details/35553983 http://blog.csdn.net/duantihi/article/det ...
- 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)
0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...
- python魔法方法:__getattr__,__setattr__,__getattribute__
python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...
- Linux内存管理4---虚拟地址空间管理
1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理. 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础.虚拟地址空间的管理.物理地址空间的管理. 本 ...
- 关于windows2008r2系统80端口被system进程占用的问题
80端口被system占用的问题 今天启动tomcat的时候发现无法启动80端口被占用 通过netstat -ano查看,发现被pid=4的进程占用 检查进程发现是system进程pid=4给占用 ...