首页 > 试题广场 >

最小花费

[编程题]最小花费
  • 热度指数:9287 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下: 距离s           票价 0<S<=L1         C1 L1<S<=L2        C2 L2<S<=L3        C3 输入保证0<L1<L2<L3<10^9,0<C1<C2<C3<10^9。 每两个站之间的距离不超过L3。 当乘客要移动的两个站的距离大于L3的时候,可以选择从中间一个站下车,然后买票再上车,所以乘客整个过程中至少会买两张票。 现在给你一个 L1,L2,L3,C1,C2,C3。然后是A B的值,其分别为乘客旅程的起始站和终点站。 然后输入N,N为该线路上的总的火车站数目,然后输入N-1个整数,分别代表从该线路上的第一个站,到第2个站,第3个站,……,第N个站的距离。 根据输入,输出乘客从A到B站的最小花费。

输入描述:
以如下格式输入数据:
L1  L2  L3  C1  C2  C3
A  B
N
a[2]
a[3]
……
a[N]


输出描述:
可能有多组测试数据,对于每一组数据,
根据输入,输出乘客从A到B站的最小花费。
示例1

输入

1 2 3 1 2 3
1 2
2
2

输出

2
头像 philos
发表于 2021-02-05 20:38:08
思路 题干有点混乱,稍微整理一下: 距离 s 票价 用 dp[j] 表示从第 i 站买票到第 j 站的最小花费,则 dp[j] 等于从前面的某个站到第 j 站花费的最小值。 #include<iostream> #include<vector&g 展开全文
头像 CserDu
发表于 2022-02-02 17:50:02
线性逆序dp f[i]表示从i站出发到达终点站的花费,那么从i站有3种选择: 1、买票1 2、买票2 3、买票3 假设买了其中一种票,到达了j站(j>i),那么f[i]=票的价格+f[j]。 注意,ij站之间的距离小于等于l3,因为一张票可以走的最大距离就是l3. 按照上述思路,从后向前递推即 展开全文
头像 子豪不自豪
发表于 2023-12-28 19:10:50
#include <math.h> #include <stdio.h> //dp[i] = min{dp[i-1]+(i到i-1之间的合适的价位)...dp[i-n]+(i到i-n之间合适的价位)} //dis[i] - dis[i-n]<l3 //把握好一旦距离超 展开全文
头像 无限恒星
发表于 2024-05-13 16:09:17
/* 这题,评论区的答案都没我写得好 */ #include <iostream> #include <vector> #include <climits> using namespace std; int L1, L2, L3, C1, C2, C3; int 展开全文
头像 程昱同学
发表于 2023-01-20 13:34:36
#include <climits> #include <iostream> #include <vector> using namespace std; vector<int> dis; int main() { //处理一下输入,有三种距离 展开全文
头像 886rtxz
发表于 2023-08-02 13:02:24
#include <climits> #include <iostream> #include <vector> using namespace std; int l1, l2, l3, c1, c2, c3; int way(int i){ if(i& 展开全文
头像 牛客32950103号
发表于 2024-03-08 16:38:16
解题思路:dfs(i,j):表示从i站到j站的最少花费从i到j有两种方法:(1)如果i到j站之间距离小于l3则可之间前往(2)如果大于l3,则尝试选取一个中转站k,将dfs(i,j)问题转换为子问题dfs(i,k)和dfs(k,j),枚举每一个k,k的范围是i<k<j最终递推公式为dfs 展开全文
头像 南航_aimafan
发表于 2023-03-19 11:47:26
// 最小花费 // https://www.nowcoder.com/practice/e6df3e3005e34e2598b9b565cfe797c9 // Medium #include <iostream> using namespace std; const int MAXN 展开全文
头像 ImSev7en_1
发表于 2022-09-12 21:25:04
对于题意理解上,需要额外注意: 该铁路总线路站点是从站点1开始编号一直到N 起始站点A和终止站点B随意即:1=<A<=N,1<=B<=N #include <iostream> #include <vector> # 展开全文