ccf 行車路線

2022-01-28 14:58:26 字數 1397 閱讀 6414

問題描述

小明和小芳出去鄉村玩,小明負責開車,小芳來導航。

小芳將可能的道路分為大道和小道。大道比較好走,每走1公里小明會增加1的疲勞度。小道不好走,如果連續走小道,小明的疲勞值會快速增加,連續走s公里小明會增加s

2的疲勞度。

例如:有5個路口,1號路口到2號路口為小道,2號路口到3號路口為小道,3號路口到4號路口為大道,4號路口到5號路口為小道,相鄰路口之間的距離都是2公里。如果小明從1號路口到5號路口,則總疲勞值為(2+2)2+2+22=16+2+4=22。

現在小芳拿到了地圖,請幫助她規劃乙個開車的路線,使得按這個路線開車小明的疲勞度最小。

輸入格式

輸入的第一行包含兩個整數n, m,分別表示路口的數量和道路的數量。路口由1至n編號,小明需要開車從1號路口到n號路口。

接下來m行描述道路,每行包含四個整數t, a, b, c,表示一條型別為t,連線a與b兩個路口,長度為c公里的雙向道路。其中t為0表示大道,t為1表示小道。保證1號路口和n號路口是連通的。

輸出格式

輸出乙個整數,表示最優路線下小明的疲勞度。

樣例輸入

6 71 1 2 3

1 2 3 2

0 1 3 30

0 3 4 20

0 4 5 30

1 3 5 6

1 5 6 1

樣例輸出

76樣例說明

從1走小道到2,再走小道到3,疲勞度為52=25;然後從3走大道經過4到達5,疲勞度為20+30=50;最後從5走小道到6,疲勞度為1。總共為76。

80分.. 賽後還沒想怎麼優化.. 以後再解決吧

#includeusing

namespace

std;

const

long

long inf =1e18;

intn,m;

struct

node;

struct

edge

};vector

g[510][2

];long

long d[510

];priority_queue

que;

long

long p2(long

long

a)int

solve());

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

for(int i=0;i1].size();i++)); }}

} return

d[n];

}int

main ()

); g[b][t].push_back();

}cout

<< solve()

0;

}

ccf 行車路線

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

CCF行車路線

首先這道題沒寫出來,困擾了好久,也看過了別人的 都是運用迪傑斯特拉和弗洛伊德相結合,但是我不是很理解,要再深入理解一下這兩個演算法。期間用了記憶化搜尋,得了六十分 用了求出每條路徑再計算每條路徑值,超時,加了最優性剪枝,也只有三十。先記下這道題,回頭再寫。include include define...

CCF行車路線

題目鏈結 注意事項 dev c 宣告 檔案才能使用memset函式 最短路演算法一定要先初始化好相關的陣列變數,將相應的值初始化為最大值 題目最終所求的結果一般都很大,最好使用 long long 型別。一定要先測試一遍程式再提交 最開始這道題我想用兩張圖同時用floyd演算法過一遍,最後發現這種想...