POJ:Arbitrage (搜索,汇率换算是否赚?)
POJ 2240 http://poj.org/problem?id=2240
题意:判断是否存在使得汇率增多的环
【任意一个点的汇率增多都可以】
Floyd 简单变形
\(w[i][j] = max(w[i][j], w[i][k]*w[k][j])\)
#ifndef ONLINE_JUDGE
#pragma warning(disalbe : 4996)
#endif
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<map>
#include<cstring>
using namespace std;
const int maxn = 40;
double d[maxn];
int n, m;
double w[maxn][maxn];
map<string, int>mp;
void floyd() {
for (int k = 1; k <= n; ++k)
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
w[i][j] = max(w[i][j], w[i][k] * w[k][j]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif // !ONLINE_JUDGE
int kcase = 0;
while (cin >> n && n) {
mp.clear();
string s;
for (int i = 1; i <= n; ++i) {
cin >> s;
mp[s] = i;
w[i][i] = 1;//自己换自己
}
cin >> m;
string s1, s2;
double rat;
for (int i = 0; i < m; ++i) {
cin >> s1 >> rat >> s2;
w[mp[s1]][mp[s2]] = rat;
}
floyd();
bool flag = 0;
for (int i = 1; i <= n; ++i)
if (w[i][i] > 1.0) { flag = 1; break; }
printf("Case %d: ", ++kcase);
if (flag) printf("Yes\n");
else printf("No\n");
}
#ifndef ONLINE_JUDGE
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif // !ONLINE_JUDGE
return 0;
}
bellman_ford 判断正环
#ifndef ONLINE_JUDGE
#pragma warning(disalbe : 4996)
#endif
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<map>
#include<cstring>
using namespace std;
const int maxn = 40;
double d[maxn];
int n, m;
struct Edge {
int u, v;
double r;
}edge[maxn * maxn];
map<string, int>mp;
bool bellman_ford(int s) {
memset(d, 0, sizeof(d));
d[s] = 1;
for(int i = 1;i <=n; ++i)
for (int j = 0; j < m; ++j) {
int u = edge[j].u;
int v = edge[j].v;
double r = edge[j].r;
if (d[v] < d[u] * r)
d[v] = d[u] * r;
}
if (d[s] > 1.0)return true;
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif // !ONLINE_JUDGE
int kcase = 0;
while (cin >> n && n) {
mp.clear();
string s;
for (int i = 1; i <= n; ++i) {
cin >> s;
mp[s] = i;
}
cin >> m;
string s1, s2;
double rat;
for (int i = 0; i < m; ++i) {
cin >> s1 >> rat >> s2;
edge[i].u = mp[s1];
edge[i].v = mp[s2];
edge[i].r = rat;
}
bool flag = false;
for(int i = 1;i <=n; ++i)
if (bellman_ford(i)) {
flag = true;
break;
}
printf("Case %d: ", ++kcase);
if (flag) printf("Yes\n");
else printf("No\n");
}
#ifndef ONLINE_JUDGE
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif // !ONLINE_JUDGE
return 0;
}
POJ:Arbitrage (搜索,汇率换算是否赚?)的更多相关文章
- [java] 更好的书写equals方法-汇率换算器的实现(4)
[java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]> [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...
- [java] 注释以及javadoc使用简介-汇率换算器的实现-插曲3
[java] 注释以及javadoc使用简介-汇率换算器的实现-插曲3 // */ // ]]> [java] 注释以及javadoc使用简介-汇率换算器的实现-插曲3 Table of C ...
- [java] jsoup使用简介-汇率换算器实现-插曲2
[java] jsoup使用简介-汇率换算器实现-插曲2 // */ // ]]> [java] jsoup使用简介-汇率换算器实现-插曲2 Table of Contents 1 系列文章 ...
- [java] 汇率换算器实现(3)
[java] 汇率换算器实现(3) // */ // ]]> [java] 汇率换算器实现(3) Table of Contents 1 系列文章地址 2 前言 3 提取简单表单信息 3.1 ...
- [java] 汇率换算器实现-插曲1-正则表达式(1)
[java] 汇率换算器实现-插曲1-正则表达式(1) // */ // ]]> // */ // ]]> [java] 汇率换算器实现-插曲1-正则表达式(1) Table of C ...
- [java] 汇率换算器实现(2)
[java] 汇率换算器实现(2) // */ // ]]> // */ // ]]> [java] 汇率换算器实现(2) Table of Contents 1 系列文章地址 2 前 ...
- [java] 汇率换算器实现(1)
[java] 汇率换算器实现(1) // */ // ]]> [java] 汇率换算器实现(1) Table of Contents 1 问题描述 2 类设计 3 初步实现 3.1 建立项目 ...
- 【菜鸟学Python】案例一:汇率换算
汇率换算V1.0 案例描述: 设计一个汇率换算器程序,其功能是将外币换算成人民币,或者相反 案例分析: 分析问题:分析问题的计算部分: 确定问题:将问题划分为输入.处理及输出部分: 设计算法:计算部分 ...
- 汇率换算自然语言理解功能JAVA DEMO
>>>>>>>>>>>>>>>>>>>>>>>> 欢迎转 ...
- catch that cow POJ 3278 搜索
catch that cow POJ 3278 搜索 题意 原题链接 john想要抓到那只牛,John和牛的位置在数轴上表示为n和k,john有三种移动方式:1. 向前移动一个单位,2. 向后移动一个 ...
随机推荐
- python的动态绑定属性和方法
目录 创建类 动态绑定属性 动态绑定方法 创建类 首先我们创建一个类和它的对象 class Student: def __init__(self, name, age): self.name = na ...
- LabVIEW基于机器视觉的实验室设备管理系统(5)
目录 行动计划 设备借用 判断设备ID是否正确.设备是否在库 判断是否为已注册用户.电话是否正确 借出设备 设备归还 信息查询 判断ID是否正确.选择设备状态 效果演示 今天这一期,我们就来完成实验 ...
- 用友NCC&WMS&泛微 系统对接案例分享
用户故事 产品版本:NCC2105 故事是这么开始的,用友全国伙伴社区的社区成员,对我们的多系统集成架构很感兴趣,经常跟我讨论相关系统集成层面的问题:随着企业的发展,由于信息产业的技术含量高,信息系统 ...
- 【封装】Splay
注意确保操作合法性,否则可能陷入死循环 以点权作为排序依据 struct Splay{ #define ls p[u].son[0] #define rs p[u].son[1] #define ma ...
- 用Spring导致的无法运行Java文件的问题的解决方案
一般来说,这个问题主要是出现在用idea社区版的Spring Initializr这个插件来创建Spring项目.接下来我会以图的方式进行解说. 第一步创建Spring项目: 这里用maven的方式进 ...
- springMvc报错
这个报错困扰了我大概一天,主要是刚开始没抓到主要原因,是因为自己的项目结构出现了问题, 导致找不到应有的东西,另一方面就是maven的问题,将maven解决后这个就能用了. 具体解决在https:// ...
- C++学习笔记三:变量与数据类型(浮点型)
1. 数据类型与所占内存大小 类型 大小 精度 注意 float 4 7 double 8 15 默认 long double 16 >double 精度就是有效数字. 2. 声明和初始 ...
- Python实现模块热加载
为什么需要热加载 在某些情况,你可能不希望关闭Python进程并重新打开,或者你无法重新启动Python,这时候就需要实现实时修改代码实时生效,而不用重新启动Python 在我的需求下,这个功能非常重 ...
- Kernel Memory 入门系列:文档预处理
Kernel Memory 入门系列:文档预处理 Embedding为我们提供了问题理解和文档检索的方法,但是面对大量的文档,如果在用于提问的时候再进行文档的Embedding的话,那这个过程是非常耗 ...
- Transformer在量化投资的应用
导语 RNN.LSTM和GRU网络已在序列模型.语言模型.机器翻译等应用中取得不错的效果.循环结构(recurrent)的语言模型和编码器-解码器体系结构取得了不错的进展. 但是,RNN固有的顺序属性 ...