zoukankan      html  css  js  c++  java
  • P1359 租用游艇

    题目描述

    长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<=j<=n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n 所需的最少租金。

    对于给定的游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<j<=n,编程计算从游艇出租站1 到游艇出租站n所需的最少租金。

    保证计算过程中任何时刻数值都不超过10^6

    输入输出格式

    输入格式:

    由文件提供输入数据。文件的第1 行中有1 个正整数n(n<=200),表示有n个游艇出租站。接下来的n-1 行是一个半矩阵r(i,j),1<=i<j<=n。

    输出格式:

    程序运行结束时,将计算出的从游艇出租站1 到游艇出租站n所需的最少租金输出到文件中。

    输入输出样例

    输入样例#1:
    3
    5 15
    7
    
    
    输出样例#1:
    12
    
    

    本来是DP,让我做成了最短路。。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 using namespace std;
     6 void read(int & n)
     7 {
     8     char c='+';int x=0;int flag=0;
     9     while(c<'0'||c>'9')
    10     {
    11         c=getchar();
    12         if(c=='-')
    13         flag=1;
    14     }
    15     while(c>='0'&&c<='9')
    16     x=x*10+(c-48),c=getchar();
    17     flag==1?n=-x:n=x;
    18 }
    19 const int MAXN=1001;
    20 int maxt,n;
    21 int dp[MAXN][MAXN];
    22 int main()
    23 {
    24     read(n);
    25     for(int i=1;i<=n;i++)
    26         for(int j=1;j<=n;j++)
    27         dp[i][j]=438438;
    28     for(int i=1;i<=n-1;i++)
    29         for(int j=i+1;j<=n;j++)
    30             read(dp[i][j]);
    31     for(int k=1;k<=n;k++)
    32         for(int i=1;i<=n;i++)
    33             for(int j=1;j<=n;j++)
    34             {
    35                 if(dp[i][k]!=438438&&dp[k][j]!=438438)
    36                 {
    37                     dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
    38                 }
    39             }
    40     cout<<dp[1][n];
    41     return 0;
    42 }
  • 相关阅读:
    pip安装
    nfs
    源码方式安装软件
    自启动
    multipath
    linux永久添加和删除路由
    iscsi
    linux识别workstation磁盘的uuid
    centos镜像各种cd,dvd版本区别
    转:C# 中 MSCHART 饼状图显示百分比
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7067324.html
Copyright © 2011-2022 走看看