暫無鏈結
——過去已成為過去,而未來終將是過去。所有事物在出現的那一刻都注定成為歷史……
題目背景
公元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...