NOIp2012 開車旅行

2021-09-29 02:45:45 字數 2620 閱讀 5238

傳送門

以後序列上的問題可以想一想倍增。。

s a[

i]/s

b[i]

sa[i]/sb[i]

sa[i]/

sb[i

]記錄在i

ii這個位置讓a/b

a/ba/

b開車到達的點。

把a

aa和b

bb都跳一次稱為一輪。

d is

[i][

j]

dis[i][j]

dis[i]

[j]表示從i

ii跳2

j2^j

2j輪的總路程。

p os

[i][

j]

pos[i][j]

pos[i]

[j]表示從i

ii跳2

j2^j

2j輪後的位置。

d is

_a[i

][j]

dis\_a[i][j]

dis_a[

i][j

]表示從i

ii跳2

j2^j

2j輪a

aa所走的總路程。

b

bb的路程用總路程減去a

aa的路程即可。

最近點和次近點用set

setse

t查一查,要注意距離相同時按照海拔從小到大排。

#include

#define ll long long

#define re register

#define cs const

#define pii std::pair

#define mp std::make_pair

#define se second

#define fi first

cs int n=

1e5+

10,oo=

1e9+

7,log=17;

namespace io

template

<

typename t>

inline t get()

while

(isdigit

(ch)

) x=

((x+

(x<<2)

)<<1)

+(ch^48)

,ch=gc(

);return f?x:

-x;}

inline

intgi()

inline ll gl()

}using io::gi;

using io::gl;

inline

intmin

(int x,

int y)

inline

void

min(

int&x,

int y)

int n,m,sa[n]

,sb[n]

,pos[n]

[log]

,ans1=1;

pii h[n]

;ll dis_a[n]

[log]

,dis_b[n]

,dis[n]

[log]

,x_0;

double quo;ll suma,sumb;

std::set s;

std::set

::iterator it;

inline

intpre

(cs pii &h)

inline

intsuf

(cs pii &h)

std::vector x;

inline

bool

cmp(cs pii &a,cs pii &b)

intmain()

for(

int re j=1;

(1<<=n;

++j)

for(

int re i=

1;i<=n;

++i)

if(pos[pos[i]

[j-1]]

[j-1])

pos[i]

[j]=pos[pos[i]

[j-1]]

[j-1],

dis[i]

[j]=dis[pos[i]

[j-1]]

[j-1

]+dis[i]

[j-1],

dis_a[i]

[j]=dis_a[pos[i]

[j-1]]

[j-1

]+dis_a[i]

[j-1];

x_0=gl(

),quo=oo;

for(

int re i=

1,now;i<=n;

++i)

printf

("%d\n"

,ans1);

m=gi()

;for

(int re i=

1;i<=m;

++i)

}

Noip2012 開車旅行

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

NOIP2012 開車旅行

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

NOIP2012 開車旅行

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