ccf 201712 4 行車路線 70分

2022-08-28 17:30:24 字數 1067 閱讀 9453

ccf 201712-4 行車路線

解題思路:

首先dijkstra是基於貪心演算法的,即每一次作出的選擇都具有貪心選擇性。此題由於有「如果連續走小道,小明的疲勞值會快速增加,連續走s公里小明會增加s

2的疲勞度。」這種情況,所以不能使用dijkstra演算法。

這裡使用bellman-ford演算法

70分備份待修改:

1 #include2 #include3

using

namespace

std;

4int n,m;//

n為路口的數量,m為道路的數量

5const

int maxn = 500 + 5;6

const

int maxm = 100000 + 5;7

const

int inf = 1000000;//

無窮大8

struct

nodepath[2*maxm];

1314

int edge[maxn][maxn];//

記錄兩個點之間路徑的編號

15int dist[maxn];//

記錄源點1到每乙個節點的最短路

16int pro[maxn];//

記錄每乙個節點的前驅結點

CCF 201712 4 行車路線

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

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 記錄以當前小路為結尾的前面的連續小路之和...