PAT甲級真題1087 條條大路通羅馬

2021-10-12 10:29:18 字數 2064 閱讀 8131

從我們的城市到達羅馬有許多不同的旅遊路線。

請你在成本最低的旅遊路線之中,找到使得遊客幸福感最強的路線。

輸入格式

第一行包含兩個整數 nn 和 kk,分別表示總城市數量,城市之間道路數量,還包含乙個城市名字,表示初始城市。

接下來 n−1n−1 行,每行包含乙個城市名和乙個整數,表示到達該城市(初始城市除外)可以獲得的幸福感。

接下來 kk 行,每行包含乙個道路的資訊,格式為 city1 city2 cost,表示兩個城市之間的道路行走的花費,道路是雙向的。

城市都是由三個大寫字母構成的字串。

我們的目的地始終都是羅馬 rom。

輸出格式

我們應該找到成本最低的路線。

如果這樣的路線不是唯一的,那麼選取使人們獲得最大幸福感的路線。

如果這樣的路線仍然不是唯一的,那麼我們選擇平均幸福感最大的路線,資料保證這種路線唯一。

平均幸福感 = 總幸福感 / 經過的城市數量(初始城市不算)

第一行輸出四個整數,最小成本的路線數量,最小成本,幸福感,平均幸福感(只取整數部分)。

第二行,按照 city1->city2->…->rom 的格式輸出路線。

資料範圍

2≤n≤2002≤n≤200,

1≤k≤2501≤k≤250,

每個城市的幸福感範圍在 [0,100][0,100],

每條路線最大成本不超過 10001000

輸入樣例:

67 hzh

rom 100

pkn 40

gdn 55

prs 95

bln 80

rom gdn 1

bln rom 1

hzh pkn 1

prs rom 2

bln hzh 2

pkn gdn 1

hzh prs 1

輸出樣例:33

19597

hzh-

>prs-

>rom

#include

using

namespace std;

const

int n=

250;

int g[n]

[n],w[n]

;int n,m;

int dist[n]

,weight[n]

,cnt[n]

,sum[n]

,pre[n]

;//sum記錄點數 平均幸福感最大點數最小路線

bool st[n]

;unordered_mapint>mp1;

unordered_map<

int, string>mp2;

void

dijiskstra()

if(t==-1

)break

; st[t]

=true

;for

(int v=

1;v<=n;v++

)else

if(dist[t]

+g[t]

[v]==dist[v]

)else

if(weight[t]

+w[v]

==weight[v])}

}}}}

intmain()

memset

(g,0x3f

,sizeof g)

;//記得初始化

for(

int i=

0;i)dijiskstra()

;int t=mp1[

"rom"];

cout<<<

' '<<<

' '<<<

' '

int> v;

for(

int i=t;i!=

1;i=pre[i]

)for

(int i=v.

size()

-1;i>=

0;i--

)return0;

}

PAT甲級真題1153

pat 准考證號由 44 部分組成 第 11 位是級別,即 t 代表頂級 a 代表甲級 b 代表乙級 第 2 42 4 位是考場編號,範圍從 101101 到 999999 第 5 105 10 位是考試日期,格式為年 月 日順次各佔 22 位 最後 11 1311 13 位是考生編號,範圍從 00...

PAT甲級真題 1014 Wait In Line

一 題目 二 思路 題意 模擬排隊,但和實際排隊的區別在於 思路 模擬排隊,記錄消費者辦理結束所需的總時間 以分鐘為單位,最後轉換為時刻,由等待時間 辦理時間組成 若等待時間wt 540,則給予sorry 否則,根據總時間sum算出相應時刻 注意 當兩個視窗同樣長且均未滿時,要同時入隊消費者,使之隊...

PAT甲級真題1140 外觀數列

外觀數列是指具有以下特點的整數序列 d,d1,d111,d113,d11231,d112213111,其中 d 是乙個 0,9 0,9 範圍內的不等於 11 的整數。序列的第 n 1n 1 項是對第 nn 項的描述。比如第 22 項表示第 11 項有 11 個 d,所以就是 d1 第 22 項是 1...