题意:套利,一个US币换取0.5 British pound,而1 British pound 换取10.0 French francs,同一时候 1 French franc buys 0.21 US dollar. 那么1
US dollar 能够换取 0.5 * 10.0 * 0.21 = 1.05 US dollars ,通过一系列换取得到1.05US币,那么就能够从中获取利润,问:给出一些货币,以及兑换率,问能否够从中获利

题解:这里能够用最短路的方法解决:我们在边的结构体 加入兑换率,然后松弛过程中,不同于最短路的取小,我们要让它获利就要取大,那么我们在spfa之前的dis初始化的时候,我们就所有memset为0,dis[src]
源点就赋值 1.这样我们就能够依照上面的方式松弛操作,然后推断是否构成负环。。假设能够,那么意思就是dis 会越来越大,spfa 用cnt[i]表示 i 入队的次数,i的入队次数大于 顶点数就说明构成负环

上马:

#include <iostream>
#include <map>
#include <string>
#include <cstring>
#include <queue> using namespace std; #define MAX 35 int N,M; struct Edge{
int to,next;
double rate;
}edge[MAX*MAX];
int head[MAX]; void add(int u,int v,double rate,int i)
{
edge[i].to = v;
edge[i].rate = rate;
edge[i].next = head[u];
head[u] = i;
} double dis[MAX];
int cnt[MAX];
bool flag[MAX];
bool spfa()
{
memset(flag,false,sizeof(flag));
memset(cnt,0,sizeof(cnt));
memset(dis,0,sizeof(dis)); dis[0] = 1;
flag[0] = true;
cnt[0] = 1; queue<int> q;
q.push(0); while(!q.empty())
{
int u = q.front(); q.pop();
flag[u] = false;
for(int i = head[u]; i != -1; i = edge[i].next)
{
int v = edge[i].to;
double rate = edge[i].rate;
if(dis[v] < dis[u]*rate){
dis[v] = dis[u]*rate;
if(!flag[v]){
q.push(v);
flag[v] = true;
cnt[v] ++;
}
}
if(cnt[v] > N) return true;
}
}
return false;
} int main()
{
string a,b;
double rate;
int cas = 1;
while(cin >> N)
{
if(!N) break;
map<string,int>m;
for(int i = 0; i < N; i ++) {
cin >> a;
m[a] = i;
}
cin >> M;
memset(head,-1,sizeof(head));
for(int i = 0; i < M; i ++){
cin >> a >> rate >> b;
int u = (*m.find(a)).second;
int v = (*m.find(b)).second;
add(u,v,rate,i);
} cout << "Case " << cas++ << ": ";
if(spfa()) cout << "Yes" <<endl;
else cout << "No" <<endl;
}
return 0;
}

hdu1217Arbitrage--解题报告的更多相关文章

  1. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  2. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  3. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  4. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  5. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  6. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  7. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

  8. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

  9. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  10. ACM: Just a Hook 解题报告 -线段树

    E - Just a Hook Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   D ...

随机推荐

  1. SSH2三大框架整合警告

    *********************************************************************** * WARNING!!! * * * * >> ...

  2. HDU 4726 Kia's Calculation (贪心算法)

    Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...

  3. (step8.2.7)hdu 1517(A Multiplication Game——巴什博弈变形)

    题目大意:输入一个整数n.谁先报的数大于n,谁就输了.(初始值p  == 1 , 后一个人报的数必须在前一个人报的数的基础上乘上(2 ~ 9)之间的任意一个数) 解题思路:巴什博奕的变形 1) 解题思 ...

  4. 关于new enhancement的一些知识

    关于new enhancement sap源程序里也给我们留了很多. 以下例句point .section.spot说明这些知识点. 1.不管是point还是section 都是基于spot的,spo ...

  5. Spring MVC Cookie example

    In this post we will see how to access and modify http cookies of a webpage in Spring MVC framework. ...

  6. cocos2d学习笔录1

    CCDirector的主要作用: 1.访问和改变场景: 2.访问cocos2d-x的配置细节 3.访问视图(OPENGL,UIVIEW,UIWINDOW): 4.暂停,恢复和结束游戏: 5.在UIKi ...

  7. 测试framebuffer

    static GGLContext *gr_context = 0; static GGLSurface gr_framebuffer[2]; static unsigned gr_active_fb ...

  8. Python Unittest 自动化单元测试框架Demo

    python 测试框架(本文只涉及 PyUnit) https://wiki.python.org/moin/PythonTestingToolsTaxonomy 环境准备 首先确定已经安装有Pyth ...

  9. 【ASP.NET Web API教程】2.3.4 创建Admin视图

    原文:[ASP.NET Web API教程]2.3.4 创建Admin视图 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 4: ...

  10. hdu 4707 搜索 目前做的最水的搜索

    直接深搜  ,水啊 #include<cstdio> #include<cstring> #include<algorithm> using namespace s ...