洛谷 P3406 海底高鐵 差分

2021-10-09 09:31:35 字數 1800 閱讀 7999

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 0

0 +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個城市,每個城市都有乙個站。不過,由於各個城市之間不能協調好,於是乘車每經過兩個相鄰的城市之...