這題倍增。
當拿到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...