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;
    }
    转载是允许的,但是除了博主同意的情况下,必须在文章的明显区域说明出处,否则将会追究其法律责任。
  • 相关阅读:
    php基本语法学习
    mac下charles使用
    python--logging模块
    CSS样式(二)
    CSS样式(一)
    HTML、CSS基础知识(四)
    HTML、CSS基础知识(三)
    HTML、CSS基础知识(二)
    HTML、CSS基础知识(一)
    python学习(三十四)第一个框架
  • 原文地址:https://www.cnblogs.com/Xray-luogu/p/9551147.html
Copyright © 2011-2022 走看看