今年最佳最短路題

2022-09-09 20:18:19 字數 1068 閱讀 3130

給出一張有向圖,每條有向邊表示一條有起始站和終止站的鐵路,通過這條路的時間為 \(t\) ,到每個站點(節點)都會停靠,每列車都有乙個發車時間點 \(x\) ,有乙個發車頻率 \(f\) ,即從第 \(x\) 分鐘開始,每 \(f\) 分鐘發一輛車,乙個乘坐花費 \(c\) ,求出 \(1-n\) 最短的交通時間並且路費盡量小。

我們很容易會想到這道題的本質就是求 \(1-n\) 的最短路,所以我們就直接考慮最短路中如何進行鬆弛操作:

我們可以分成兩種情況來考慮:

( \(j\) 為當前站點的下乙個站點)

我們在 \(dijkstra\) 中用 \(priority_queue\) 來維護 \(dis\) 最短時間,當然我們也可以用 \(pair\) 來同時維護最短時間 \(dis\) 和最小花費 \(cost\)

#include#include using namespace std;

typedef long long ll;

typedef unsigned long long ull;

#pragma gcc optimize(2)

#pragma gcc optimize(3,"ofast","inline")

#define endl '\n'

#define pii pair,int>

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const int maxn=1e6+5;

int n,m;

int e[maxn],nex[maxn],h[maxn],w[maxn],id;

int dis[maxn],cost[maxn],vis[maxn];

int c[maxn],f[maxn],s[maxn];

void add(int x,int y,int z,int xx,int yy,int zz)

void dij(int x));

while(q.size()));}}

}}int main()

dij(1);

cout<}

演算法題 最短路徑 03 最短路

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...

HDU 2544 最短路 最短路裸題

time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到...

刷題 最短路 luogu P2384 最短路

給定n個點的帶權有向圖,求從1到n的路徑中邊權之積最小的簡單路徑。來自題解 首先考慮暴力維護,顯然極端資料就會炸裂,那麼用什麼來維護呢?由於log n m log n log m ok,這道題到此結束 我們只要把乘積轉化為對數,最後再還原就可以了,因為精度要求,所以還是記錄路徑好些。include ...