【題目描述】
跳跳虎在外面出去玩忘了時間,現在他需要在最短的時間內趕回家。
跳跳虎所在的世界可以抽象成乙個含有 n 個點的圖(點編號從 1 到 n ),跳跳虎現在在 1 號點,跳跳虎的家在 n 號點。
圖上一共有 m 條單向邊,通過每條邊有固定的時間花費。
同時,還存在若干個單向傳送通道,傳送通道也有其時間花費。
傳送通道一般來說比普通的道路更快,但是跳跳虎最多只能使用 k 次。
跳跳虎想知道他回到家的最小時間消耗是多少。
【輸入格式】
第一行輸入 4 個整數 n,m,q,k 。( n 表示點數,m 表示普信道路的數量,q 表示傳送通道的數量,k 表示跳跳虎最多使用 k 次傳送通道)
接下來 m 行每行 3 個整數 u,v,w ,表示有一條從 u 到 v ,時間花費為 w 的普信道路。( 1≤u,v≤n,1≤w≤103 )
接下來 q 行每行 3 個整數 x,y,z ,表示有一條從 x 到 y ,時間花費為 z 的傳送通道。( 1≤x,y≤n,1≤z≤103 )
【輸出格式】
輸出一行乙個整數表示最小時間消耗,如果沒法回到家輸出 -1 。
【樣例輸入】
5 5 2 1
1 2 1
1 3 2
2 4 2
3 4 3
4 5 4
1 4 1
2 5 1
【樣例輸出】
2【資料規模與約定】
對於30%的資料,1≤n≤500, 0≤m,q≤2000,k=0;
對於另外30%的資料,1≤n≤500,0≤m,q≤2000,k=1;
對於100%的資料,1≤n≤500,0≤m,q≤2000,0≤k≤109。
分層建圖,
定義 dis [ u ][ k ] 表示到結點 u ,共經過 k 條第二類邊的最短路。
顯然我們可以以 k 為階段劃分狀態,然後就劃分成了最短路的子問題。
dis [ u ][ k ] 可以轉移到 dis [ v ][ k ](第一類邊)和 dis [ v ][ k+1 ](第二類邊)。
然後就可以用dijkstar 求最短路求出答案。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 1001
#define inf 0x3f3f3f3f
intn,m,q,k;
int head[maxn],cnt=0
;int d[maxn][maxn<<1
];struct
hht[maxn<<2
];struct pd//
過載(做優先佇列用) };
priority_queue
q;inline
void add(int nex,int to,int dis,int
bo)inline
intread()
while
(isdigit(ls))
return xs*kr;
}inline
void dijkstra()//
dijkstra 最短路的雙層圖模板(和普通最短路模板基本一樣)
); d[
1][0]=0
;
while(!q.empty())
);//
存:邊權,已走過的傳送道路數,距點1 的距離
} }
}}int
main()
for(int i=1;i<=q;i++)
memset(d,inf,
sizeof
(d));
dijkstra();
int ans=inf;
for(int i=0;i<=min(q,k);i++)
ans=min(ans,d[n][i]);
if(ans==inf)//
判斷是否有路
printf(
"%d\n
",ans);
return0;
}
模擬 2018 9洛谷月賽T2
傳送門 一道模擬題?根據給出的條件可以分類討論列出關於k的不等式,然後求區間的交 但是求交不好求,可以轉化成求補集的並,還是挺常見的套路 具體實現還是很有技巧的,可以用結構體存這個點和它的型別 左端點or右端點 然後通過排序求並,具體細節看注釋 include include include inc...
20161005 NOIP 模擬賽 T2 解題報告
beautiful 2.1 題目描述 乙個長度為 n 的序列,對於每個位置 i 的數 ai 都有乙個優美值,其定義是 找到序列中最 長的一段 l,r 滿足 l i r,且 l,r 中位數為 ai 我們比較序列中兩個位置的數的大小時,以數值為第一關鍵字,下標為第二關鍵字比較。這樣的話 l,r 的長度只...
20161003 NOIP 模擬賽 T2 解題報告
weed duyege的電腦上面已經長草了,經過辨認上面有金坷垃的痕跡。為了查出真相,duyege 準備修好電腦之後再進行一次金坷垃的模擬實驗。電腦上面有若干層金坷垃,每次只能在上面撒上一層高度為 vi 的金坷垃,或者除掉最 新 vi 層 不是量 撒的金坷垃。如果上面只留有不足 vi 層金坷垃,那麼...