zoukankan      html  css  js  c++  java
  • [Luogu1359] 租用游艇 题解

    正如很多$dalao$所说,$DP$确实是做这道题的一个好办法蛤

    但是因为我今天正好在自学$Floyd$,所以这题我就用$Floyd$写了

    反正这题$N$的范围很小,$O(N^3)$可以过

    $Floyd$算法的主要思想就是:找到从$i$点通过一个或多个中转点(也可能没有)到达$j$点的最佳路线。

    就是一道裸的$Floyd$

    $code$

    #define il inline
    #define rg register
    #define INF 0x3f3f3f3f //注意INF不能大于INT_MAX/2,不然就会爆int
    #define maxN 200 + 1 
    //以上是各种宏定义
    #include <bits/stdc++.h>
    
    int dis[maxN][maxN]; //dis[i][j]保存从i到j的最短租金
    
    int main()
    {
        rg int n; //定义n
        scanf("%d", &n);
        for(rg int i = 1; i < n; ++ i)
            for(rg int j = i + 1; j <= n; ++ j)
                scanf("%d", &dis[i][j]);
        for(rg int i = 1; i <= n; ++ i)
            for(rg int j = 1; j <= n; ++ j)
                if(!dis[i][j]) dis[i][j] = INF;
        //下面是Floyd算法的主要代码
        for(rg int k = 1; k <= n; ++ k) //枚举中转点k
            for(rg int i = 1; i <= n; ++ i)
                for(rg int j = 1; j <= n; ++ j)
                    if(dis[i][j] > dis[i][k] + dis[k][j]) //如果有了更好的方案
                        dis[i][j] = dis[i][k] + dis[k][j]; //就更新dis[i][j]的值
        printf("%d", dis[1][n]); //输出从1到n的最低租金
        return 0;
    }
    转载是允许的,但是除了博主同意的情况下,必须在文章的明显区域说明出处,否则将会追究其法律责任。
  • 相关阅读:
    pushlet 模式设定和session超时设定
    sql 排名
    Create Async Tree 的使用
    SQL 高级查询 50题
    pushlets 网址
    jsp 页面解析json字符串
    响应式WEB设计
    上传图片 并生成缩略图的 例子 C#.net
    profile 实现购物车 实例 (二)
    profile 实现购物车 实例(一)
  • 原文地址:https://www.cnblogs.com/Xray-luogu/p/9551147.html
Copyright © 2011-2022 走看看