p3406 海底高鐵
基本思路:
對於其中一小段,我們要麼全部買紙票,要麼全部刷卡。
所以我們只需要統計每一小段經過的總次數。
如果你暴力模擬統計的話,估計(一定會tle。
接下來來看一組例子:
六個數:
0 0 0 0 0 0
如果想讓它從第二個到第五個數全部+1,則為
0 1 1 1 1 0
如果這樣模擬+1,所用的時間複雜度為o(n)
如果記為
0 1 0 0 0 -1
所用時間複雜度為o(1)
每一位的值就是其字首和
0 1 1 1 1 0
這是一維空間內的差分,對於二維空間的差分。
p3397 地毯
如下
0 0 0 0 0 00 +1 0 0 0 -1
0 +1 0 0 0 -1
0 +1 0 0 0 -1
0 +1 0 0 0 -1
0 0 0 0 0 0
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
int k[
1100][
1100];
int n,m;
intmain()
}int s;
for(i=
1;i<=n;i++
) cout<}}
上文是關於什麼是差分,差分相關思路。
我們可以看到,對於連續的一段數,加上或減去相同的數,通過差分處理可以比模擬更高效地完成任務。
這道題的**如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
ll n,m;
ll k[
100300];
//各鐵路段的次數(差分記錄
ll num[
100300];
//路徑
typedef
struct
node;
node jo[
100300];
intmain()
for(i=
1;i) ll s=0;
//總和
ll price;
//每一段的錢
ll sum=0;
//到目前為止的次數
for(i=
1;i) cout<}
遇事不決用long long
=-=
P3406 海底高鐵 差分
題目背景 大東亞海底隧道連線著廈門 新北 博艾 那霸 鹿兒島等城市,橫穿東海,耗資1000億博艾元,歷時15年,於公元2058年建成。憑藉該隧道,從廈門可以乘坐火車直達台灣 博艾和日本,全程只需要4個小時。題目描述 該鐵路經過n個城市,每個城市都有乙個站。不過,由於各個城市之間不能協調好,於是乘車每...
洛谷P3406 海底高鐵
大東亞海底隧道連線著廈門 新北 博艾 那霸 鹿兒島等城市,橫穿東海,耗資1000億博艾元,歷時15年,於公元2058年建成。憑藉該隧道,從廈門可以乘坐火車直達台灣 博艾和日本,全程只需要4個小時。該鐵路經過n個城市,每個城市都有乙個站。不過,由於各個城市之間不能協調好,於是乘車每經過兩個相鄰的城市之...
洛谷 P3406 海底高鐵 模擬
大東亞海底隧道連線著廈門 新北 博艾 那霸 鹿兒島等城市,橫穿東海,耗資1000億博艾元,歷時15年,於公元2058年建成。憑藉該隧道,從廈門可以乘坐火車直達台灣 博艾和日本,全程只需要4個小時。該鐵路經過n個城市,每個城市都有乙個站。不過,由於各個城市之間不能協調好,於是乘車每經過兩個相鄰的城市之...