zoukankan      html  css  js  c++  java
  • HDU 1217 Arbitrage (初学Floyed)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1217

    题意:转化成图,然后求是否存在某回路,其权值的积大于1

    Floyed是求任意两点间的最短路径的,用了动态规划,思想和松弛一样,其中有个k,是指最短路径的中间点都在集合1....k里,然后k从小到大推,当k最大的时候就得到结果。。。。松弛思想在g[i][k]*g[k][j]

    和g[i][j]中选择。。。

    而这题则是求最大,且是乘积。。。所以要改下。。。。但是转化成图哪里就不用多说了,但是我才发现map A<string, int> 中的string 可以用char str[...]来代替,即可以A[str] = 6,其中str是char型而不是string

    代码:

    #include <iostream>
    #include <string>
    #include <map>
    using namespace std;
    
    const int M = 50;
    
    double g[M][M];
    
    int Floyed(int n)
    {
        for (int k = 1; k <= n; k++)
        {
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= n; j++)
                {
                    if (g[i][j] < g[i][k] * g[k][j])
                    {
                        g[i][j] = g[i][k] * g[k][j];
                    }
                }
            }
        }
    
        for (int i = 1; i <= n; i++)
        {
            if (g[i][i] > 1)
            {
                return 1;
            }
        }
        return 0;
    }
    
    
    int main()
    {
        int n;
        int t = 0;
        while (~scanf("%d", &n), n)
        {
            map <string, int> A;
            for (int i = 1; i <= n; i++)
            {
                string str;
                cin >> str;
                A[str] = i;
            }
    
            int m;
            scanf("%d", &m);
    
            memset(g, 0, sizeof(g));
    
            while (m--)
            {
                string a, b;
                double c;
                cin >> a >> c >> b;
                
                if (g[A[a]][A[b]] < c)
                {
                    g[A[a]][A[b]] = c;
                }
    
            }
        
            printf("Case %d: ", ++t);
            
            if (Floyed(n))
            {
                puts("Yes");
            }
            else
            {
                puts("No");
            }
        }
        return 0;
    }
  • 相关阅读:
    ACE 的一些词汇
    odbc连接不上,初步猜想是myodbc安装有问题
    1分钟 当数据库管理员
    硬件申请
    编译删除
    ASP.NET之数据绑定
    发布、订阅、复制、同步SQL Server 2000 数据库
    SQL——添加约束的语句
    SQL——规则
    十大著名黑客—— 凯文米特尼克
  • 原文地址:https://www.cnblogs.com/qiufeihai/p/2638822.html
Copyright © 2011-2022 走看看