POJ 2240 Arbitrage(判正环)
http://poj.org/problem?id=2240
题意:
货币兑换,判断最否是否能获利。
思路:
又是货币兑换题,Belloman-ford和floyd算法都可以的。
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<map>
using namespace std; const int maxn = + ; int n, m;
string s1,s2; map<string, int> p; struct
{
int u, v;
double rate;
}edge[maxn]; double d[]; bool bellman(int s)
{
memset(d, , sizeof(d));
d[s] = ;
for (int i = ; i < n; i++)
{
bool flag = false;
for (int j = ; j < m; j++)
{
if (d[edge[j].v] < d[edge[j].u] * edge[j].rate)
{
d[edge[j].v] = d[edge[j].u] * edge[j].rate;
flag = true;
}
}
if (!flag) break;
}
for (int j = ; j < m; j++)
if(d[edge[j].v] < d[edge[j].u] * edge[j].rate)
return true;
return false;
} int main()
{
ios::sync_with_stdio(false);
//freopen("D:\\txt.txt", "r", stdin);
double r;
int kase = ;
while (~scanf("%d", &n) && n)
{
for (int i = ; i < n; i++)
{
cin >> s1;
p[s1] = i;
}
scanf("%d", &m);
for (int i = ; i < m; i++)
{
cin >> s1 >> r >> s2;
edge[i].u = p[s1];
edge[i].v = p[s2];
edge[i].rate = r;
}
printf("Case %d: ", ++kase);
bool flag = false;
for (int i = ; i < n; i++)
{
if (bellman(i))
{
printf("Yes\n");
flag = true;
break;
}
}
if (!flag)
printf("No\n");
}
return ;
}
Belloman-ford
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<map>
using namespace std; const int maxn = + ;
const int INF = ; int n, m;
string s1,s2; map<string, int> p; double d[maxn][maxn]; void floyd()
{
for (int k = ; k < n; k++)
for (int i = ; i < n; i++)
for (int j = ; j < n; j++)
d[i][j] = max(d[i][j], d[i][k] * d[k][j]);
} int main()
{
ios::sync_with_stdio(false);
//freopen("D:\\txt.txt", "r", stdin);
double r;
int kase = ;
while (~scanf("%d", &n) && n)
{
memset(d, INF, sizeof(d));
for (int i = ; i < n; i++)
{
cin >> s1;
p[s1] = i;
d[i][i] = ; //一开始的汇率为1
}
scanf("%d", &m);
for (int i = ; i < m; i++)
{
cin >> s1 >> r >> s2;
d[p[s1]][p[s2]] = r;
}
floyd();
printf("Case %d: ", ++kase);
bool flag = false;
for (int i = ; i < n; i++)
{
if (d[i][i]>) //如果自身汇率大于1,说明可以套利
{
printf("Yes\n");
flag = true;
break;
}
}
if (!flag)
printf("No\n");
}
return ;
}
floyd
POJ 2240 Arbitrage(判正环)的更多相关文章
- POJ - 1860 Bellman-Ford判正环
心累,陕西邀请赛学校不支持,可能要自费了.. 思路:套用Bellman-Ford判断负环的思路,把大于改成小于即可判定是否存在从源点能到达的正环.如果存在正环,那么完全多跑几次正环就可以把钱增加到足够 ...
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...
- 最短路(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: 21300 Accepted: 9079 Descri ...
- POJ 2240 Arbitrage (Bellman Ford判正环)
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions:27167 Accepted: 11440 Descri ...
- POJ 2240 Arbitrage spfa 判正环
d[i]代表从起点出发可以获得最多的钱数,松弛是d[v]=r*d[u],求最长路,看有没有正环 然后这题输入有毒,千万别用cin 因为是大输入,组数比较多,然后找字符串用strcmp就好,千万不要用m ...
- POJ 2240 Arbitrage Bellman_ford 判读是否存在正环
和POJ1860差不多,就是用bellmanford判读是否存在正环,注意的是同种货币之间也可以交换,就是说:A货币换A货币汇率是2的情况也是存在的. #include<stdio.h> ...
- POJ 1860——Currency Exchange——————【最短路、SPFA判正环】
Currency Exchange Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64u S ...
- POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
- POJ 2240 Arbitrage【Bellman_ford坑】
链接: http://poj.org/problem?id=2240 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
随机推荐
- Weinre 远程调试移动端手机web页面
调试场景 1.调试页面在手机上.2.调试工具在PC的chrome3.手机跟pc要在同一个网络环境下,也就是都使用一个wifi 一.安装 Weinre 1.Weinre是基于nodejs实现的,所以使用 ...
- 【Mac】Docker安装及基础使用
Docker 安装 在 Mac OS X 系统中,首先你要下载安装包安装:Docker Toolbox 安装过程中,可以选择是否安装 Docker Machine,Docker Compose 等,默 ...
- Python - 3.6 学习第一天
开始之前 基础示例 Python语法基础,python语法比较简单,采用缩紧方式. # print absolute value of a integer a = 100 if a >= 0: ...
- thinkphp---手机访问切换模板!
手机访问切换模板:一般用在手机在做自适应的情况. 第一步:需要添加判断是否是手机访问的方法: http://www.cnblogs.com/e0yu/p/7561811.html 第二步:Home / ...
- OneThink友情链接插件使用!
OneThink友情链接插件使用: 直接安装插件就好,查看数据库会有:onethink_links 这个表: 写 links 标签,调用友情链接: <?php namespace Common\ ...
- 日期提取函数EXTRACT
EXTRACT extracts and returns the value of a specified datetime field from a datetime or interval exp ...
- xp系统报错 windows explorer has encountered a problem and needs to close.We are sorry for the inconvenience
xp系统遇到问题: 打开某个软件提示报错信息, windows explorer has encountered a problem and needs to close.We are sorry f ...
- Java编程思想第四版勘误
坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...
- Servlet + JSP 时代
Spring,Django,Rails,Express这些框架技术的出现都是为了解决什么问题,现在这些框架都应用在哪些方面? - 知乎 https://www.zhihu.com/question/2 ...
- D. Babaei and Birthday Cake---cf629D(LIS线段树优化)
题目链接:http://codeforces.com/problemset/problem/629/D 题意就是现有n个蛋糕,蛋糕的形状是圆柱体,每个蛋糕的体积就是圆柱体的体积,每个蛋糕的编号是1-- ...