P1359 租用游艇

举报
辰chen 发表于 2022/06/14 23:11:10 2022/06/14
【摘要】 P1359 租用游艇 本题链接:P1359 租用游艇 题目描述 长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游...

P1359 租用游艇

本题链接:P1359 租用游艇

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

输入格式
第一行中有一个正整数 n,表示有 n 个游艇出租站。接下来的 n−1 行是一个半矩阵 r(i,j)``(1≤i<j≤n)

输出格式
输出计算出的从游艇出租站 1 到游艇出租站 n 所需的最少租金。

输入输出样例
输入
3
5 15
7

输出
12

说明/提示
n≤200,保证计算过程中任何时刻数值都不超过 1e6

本博客给出本题截图

在这里插入图片描述

AC代码

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 210;

int n;
int f[N];       //从 1 ~ i 中的最少花费
int r[N][N];    //r[i][j]代表从 i ~ j 的花费

int main()
{
    cin >> n;
    for (int i = 1; i < n; i ++ )
        for (int j = i + 1; j <= n; j ++ ) 
            cin >> r[i][j];
    
    memset(f, 0x3f, sizeof f);
    f[1] = 0;  //从 1 ~ 1的花费显然是0
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j < i; j ++ ) 
            f[i] = min(f[i], f[j] + r[j][i]);
            
    cout << f[n] << endl;
    
    return 0;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

总结

题目叙述很怪,输入样例中的大概含义是1~2花费51~3花费152~3花费7

文章来源: chen-ac.blog.csdn.net,作者:辰chen,版权归原作者所有,如需转载,请联系作者。

原文链接:chen-ac.blog.csdn.net/article/details/119763053

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。