NOIP2012提高組 開車旅行

2021-09-10 01:28:19 字數 1203 閱讀 5334

這題倍增。

當拿到a陣列時,我們便記錄他的位置併排個序(再用乙個陣列)

然後,我們就將其變成乙個鍊錶的樣子。

由於題目要求每次這能從左邊走到右邊,

所以我們便從1開始列舉到n,

ps:luogu的也a了

上標:

#include

#include

#define ll long long

#define n 100010

using namespace std;

ll nx[n][19

],f[n][19

][2]

,cl[n][2

];int n,x,m,a[n]

,b[n]

,c[n]

,l[n]

,r[n]

,s,x;

ll a,b,fr=

0,ma=(1

<<30)

,mb=1;

inline

intread()

void

qsort

(int l,

int r)}if

(iqsort

(i,r);if

(lqsort

(l,j);}

void

jump

(int x,

int s)

intmain()

else

}elseif(

abs(a[i]

-a[l[i]])

<

abs(a[i]

-a[r[i]])

)else}}

for(

int i=

1;i<=n;i++)}

for(

int j=

1;j<=

16;j++

)for

(int i=

1;i<=n;i++

) x=

read()

;for

(int i=

1;i<=n;i++

)printf

("%d\n"

,fr)

; m=

read()

;for

(int i=

1;i<=m;i++

)return0;

}

NOIP2012提高組 開車旅行

把ab各走一次算一步 f i j 表示i點跳2 j步走到的點 da i j 表示i點跳2 j步a走的路程 db i j 表示i點跳2 j步b走的路程 倒著掃一遍求從i點a走出一次走到的點toi,記錄da i 0 然後,我們把to i 和i連邊 2.倒著掃一遍求從i b走出一次走到的點t,再列舉所有i...

NOIP2012提高組 開車旅行

題目 洛谷p1081 vijos p1780 codevs1199。題目大意 有n座海拔高度不相同的城市 編號1 n 兩城市的距離就是兩城市海拔之差。規定每次只能從編號小的城市走到編號大的城市。現在有a和b開車旅行,a每次只開到離當前城市第二近的城市 必須是可以走的,且若兩個城市與該城距離相等,海拔...

NOIP2012提高組 開車旅行 題解

題目連線 題目描述 小 a 和小 b 決定利用假期外出旅行,他們將想去的城市從 1 到 n 編號,且編號較小的城市在編號較大的城市的西邊,已知各個城市的海拔高度互不相同,記城市 i 的海拔高度為hi,城市 i 和城市 j 之間的距離 d i,j 恰好是這兩個城市海拔高度之差的絕對值,即d i,j h...