題目背景
大東亞海底隧道連線著廈門、新北、博艾、那霸、鹿兒島等城市,橫穿東海,耗資1000億博艾元,歷時15年,於公元2023年建成。憑藉該隧道,從廈門可以乘坐火車直達台灣、博艾和日本,全程只需要4個小時。
題目描述
該鐵路經過n個城市,每個城市都有乙個站。不過,由於各個城市之間不能協調好,於是乘車每經過兩個相鄰的城市之間(方向不限),必須單獨購買這一小段的車票。第i段鐵路連線了城市i和城市i+1(1<=i雖然一些事情沒有協調好,各段鐵路公司也為了方便乘客,推出了ic卡。對於第i段鐵路,需要花ci博艾元的工本費購買一張ic卡,然後乘坐這段鐵路一次就只要扣bi(biuim現在需要出差,要去m個城市,從城市p1出發分別按照p1,p2,p3…pm的順序訪問各個城市,可能會多次訪問乙個城市,且相鄰訪問的城市位置不一定相鄰,而且不會是同乙個城市。
現在他希望知道,出差結束後,至少會花掉多少的錢,包括購買紙質車票、買卡和充值的總費用。
輸入格式
第一行兩個整數,n,m。
接下來一行,m個數字,表示pi
接下來n-1行,表示第i段鐵路的ai,bi,ci
輸出格式
乙個整數,表示最少花費
輸入輸出樣例
輸入 #1
9 10
3 1 4 1 5 9 2 6 5 3
200 100 50
300 299 100
500 200 500
345 234 123
100 50 100
600 100 1
450 400 80
2 1 10
輸出 #1
說明/提示
2到3以及8到9買票,其餘買卡。
對於30%資料 m=2
對於另外30%資料 n<=1000 ,m<=1000
對於100%的資料 m,n<=100000,ai,bi,ci<=100000
再次印證了那句話,往往bug越難找,犯的錯誤就越低階。。。
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
1e5+10;
int a[maxn]
;int times[maxn]
;int n, m;
int cost[maxn][4
];intmain()
for(
int i =
1; i <= n;i++
) times[i]
+= times[i -1]
;// for(int i = 1; i <= n;i++)
// cout << i << " " << times[i] << endl;
// cout << endl;
long
long ans =0;
for(
int i =
1; i <= n; i++
) cout << ans << endl;
return0;
}
P3406 海底高鐵
不要小看了這個資料範圍 首先明確一下題意,對於樣例中的訪問順序3 1 4 1 5 9 2 6 5 3,它意味著 數字代表城市 從 3 出發,依次經過2 3間的鐵路,1 2間的鐵路,到達1 再從 1 出發,依次經過1 2,2 3,3 4之間的鐵路,到達4,以此類推.顯然,對於任意一段鐵路,可以根據訪問...
洛谷 P3406 海底高鐵 差分
p3406 海底高鐵 基本思路 對於其中一小段,我們要麼全部買紙票,要麼全部刷卡。所以我們只需要統計每一小段經過的總次數。如果你暴力模擬統計的話,估計 一定會tle。接下來來看一組例子 六個數 0 0 0 0 0 0 如果想讓它從第二個到第五個數全部 1,則為 0 1 1 1 1 0 如果這樣模擬 ...
洛谷P3406 海底高鐵
大東亞海底隧道連線著廈門 新北 博艾 那霸 鹿兒島等城市,橫穿東海,耗資1000億博艾元,歷時15年,於公元2058年建成。憑藉該隧道,從廈門可以乘坐火車直達台灣 博艾和日本,全程只需要4個小時。該鐵路經過n個城市,每個城市都有乙個站。不過,由於各個城市之間不能協調好,於是乘車每經過兩個相鄰的城市之...