2018 10 23 T3 新的家園

2021-08-30 02:02:49 字數 3714 閱讀 9183

暫無鏈結

——過去已成為過去,而未來終將是過去。所有事物在出現的那一刻都注定成為歷史……

題目背景

公元8102

8102

8102

年,火星的生態環境遭到嚴重破壞,終於也難逃人類的掠奪,變成了一顆死星。

所有人,都乘坐飛船逃往了無盡的深空,除了你。

默默地,你步行在荒蕪的街道上,凝視著這片空無一人的大地——這個你由你親自見證創造,又親眼目送它毀滅的曾經人類的第二家園。

沙暴,四處是暗紅的赤鐵塵土捲起的沙暴。

紅色的煙塵之中,你望見了遠處廢棄的行星通道,往事如潮水般湧入腦海……

題目描述

你還記得行星通道系統有n

nn個站點,e

ee條道路。這裡的道路同時包括了行星赤道上的行星通道和地面上的道路。每一條道路都是雙向通行的,且從任意一端通過第i

ii條道路需要的時間都為w

iw_i

wi​。因為站點分布在赤道上,所以一定有一些邊從1

11號站點開始依次連線2,3

,4,⋯

2,3,4,\cdots

2,3,4,

⋯號站點,並最終從n

nn號站點連回1

11號點。

最後一班飛船即將起航,所剩的時間不多了。你決定沿著行星通道上的站點移動,最後一次認真看看這個深紅的星球。

為了規劃路線,你需要知道一些站點之間移動耗費的最短時間。具體的來說,有q

qq個詢問。每乙個詢問si,

tis_i,t_i

si​,ti

​表示詢問從s

is_i

si​到t

it_i

ti​的最短用時。 (注:上一題的條件在本題中不一定適用)

【輸入】

第一行三個整數n,e

,qn,e,q

n,e,

q,表示站點數,道路數量和詢問數。

接下來e

ee行每行三個整數u,v

,wu,v,w

u,v,

w表示u,v

u,vu,

v間有一條雙向道路,通行時間為www。

接下來q

qq行每行兩個整數s,t

s,ts,

t,表示詢問s

ss站點到t

tt站點的最短用時。

【輸出】

一共有q

qq行輸出。

每一行乙個整數,表示每一次詢問的答案。

【輸入樣例】

5 6 3

1 2 1

2 5 1

2 3 1

3 4 1

4 5 1

5 1 1

2 51 5

3 5【輸出樣例】11

2【提示】

【資料範圍】

令m =e

*:保證所有環以外的邊以(ai

,bi)

(ai,bi)

(ai,bi

)形式依次給出,對於1≤i

<

n1≤i1≤

i<

n,保證a

ia_iai

​​且bi+1

b_ibi

​​+1。

保證0 ≤w

≤1000

0≤w≤1000

0≤w≤10

00,答案在231−

12^−1

231−1內。

題解發現存在決策的節點只有通道的兩端,大環上的節點許多是沒有決策的,對於這些沒有決策的節點,我們可以把這些點變成一條邊,整張圖只保留是通道端點的點,這樣整張圖大小就是o(m

)o(m)

o(m)

的了。詢問時,把起點終點加入圖中,跑一次最短路,得到答案後再把新加的邊刪掉,總複雜度為o(q

×最短路

(m,m

))o(q\times 最短路(m,m))

o(q×最短

路(m,

m))。

**

#include
#define inf 0x3f3f3f3f

using

namespace std;

const

int m=

5e5+5;

struct sded[m<<1]

;bool

operator

<

(sd a,sd b)

int loop[m]

,head[m]

,nxt[m<<1]

,dis[m]

,gra[m]

,le[m]

,ri[m]

,tot,n,m,q,cnt;

bool key[m]

,vis[m]

;priority_queuedui;

void

adde

(int f,

int t,

int w);}

void

add(

int u,

int v,

int w)

voidin(

)}intdijkstra

(int s,

int t));

for(sd f;

!dui.

empty()

;));

}}return dis[t];}

voidac(

)for

(int i=n,last=

0;i;

--i)

for(

int i=

1,s,t,x1,x2,x3,x4,x5,x6,pre=cnt;i<=q;

++i)

x1=head[le[s]

],x2=head[s]

,x3=head[le[t]

],x4=head[t]

,x5=head[ri[s]

],x6=head[ri[t]];

add(le[s]

,s,loop[s-1]

-loop[le[s]-1

]),add

(s,ri[s]

,loop[ri[s]-1

]-loop[s-1]

);add(le[t]

,t,loop[t-1]

-loop[le[t]-1

]),add

(t,ri[t]

,loop[ri[t]-1

]-loop[t-1]

);add(s,t,loop[t-1]

-loop[s-1]

);dis[s]

=dis[t]

=inf,vis[s]

=vis[t]=0

;printf

("%d\n"

,dijkstra

(s,t));

cnt=pre,head[le[s]

]=x1,head[s]

=x2,head[le[t]

]=x3,head[t]

=x4,head[ri[s]

]=x5,head[ri[t]

]=x6;}}

intmain()

Hadoop YARN的3新特性

在apache hadoop 2.4或者cdh5.0.0版本之後,增加了resourcemanger ha特性,支援基於zookeeper的熱主備切換,具體配置引數可以參考cloudera的文件 resourcemanager ha配置。2.磁碟容錯 在apache hadoop 2.4或者cdh5...

YCH的模擬賽 T3

暴搜或者字典樹,但是因為輸出所有的方案而不是方案數,不管什麼做法都逃不過輸出,所以都差不多 sol1 記憶化搜尋 當列舉方案時,f i 表示已經把字串的前i個字母都拼好的情況下有多少方案 考慮從第i 1個字元開始到j是乙個給定的單詞 如果有這樣的j的話就可以轉移 然後開乙個vector把每乙個狀態下...

Python3的新改動

最近在學python,看的書是2.x的,電腦上裝的是python3,發現蠻多的改動。這篇文章主要介紹了相比於python2.6,python3.0的新特性。更詳細的介紹請參見python3.0的文件。common stumbling blocks 本段簡單的列出容易使人出錯的變動。string an...