CCF 201712 4 行車路線

2021-08-14 14:08:53 字數 912 閱讀 3571

思路:用兩個陣列維護到達某個點的最小大路距離和最小小路距離,注意結果中間過程可能爆int, 不加long long 只有70分。
有一種特殊情況就是通過走兩次大路,消除連續的小路值,這裡就是用兩個陣列維護的原因。
#include using namespace std;

const int maxn = 100005;

typedef long long ll;

int n,m;

struct edge

edge[2*maxn];

struct node

;ll dist1[maxn],dist2[maxn];

int head[2*maxn];

int cnt;

void add(int t, int u, int v, ll w)

void spfa(int s)

); while(!q.empty()));}

}else);}

}}

}//for(int i=1; i<=n; ++i)

//printf("%d dist1[%d]=%d dist2[%d]=%d\n", i, i, dist1[i], i, dist2[i]);

if(dist1[n]==-1)

printf("%lld\n", dist2[n]);

else if(dist2[n]==-1)

printf("%lld\n", dist1[n]);

else

printf("%lld\n", min(dist1[n],dist2[n]));

}int main()

spfa(1);

return 0;

}

CCF201712 4 行車路線

一 題目大意 問題描述 小明和小芳出去鄉村玩,小明負責開車,小芳來導航。小芳將可能的道路分為大道和小道。大道比較好走,每走1公里小明會增加1的疲勞度。小道不好走,如果連續走小道,小明的疲勞值會快速增加,連續走 s公里小明會增加 s2的疲勞度。例如 有5個路口,1號路口到2號路口為小道,2號路口到3號...

ccf 2017 12 4行車路線

dijkstra變形,注意點 1.雖然題目說最終答案不會超過 10 6,但是中間過程可能超int啊 超了以後溢位變小,可能會影響到最後的解 所以還是乖乖用long long 儲存吧 2.圖的話 一定要考慮重邊和反向邊 還是只有70分 看到網上直接用sum i 記錄以當前小路為結尾的前面的連續小路之和...

ccf 201712 4 行車路線

試題編號 201712 4 試題名稱 行車路線 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 小明和小芳出去鄉村玩,小明負責開車,小芳來導航。小芳將可能的道路分為大道和小道。大道比較好走,每走1公里小明會增加1的疲勞度。小道不好走,如果連續走小道,小明的疲勞值會快速增加,連續走...