20191004機房測試 ZGY的早餐

2022-05-26 07:12:11 字數 1366 閱讀 6891

zgy 每天早上要從宿舍走路到機房,順便從學校小賣部購買早飯,當然機智的 zgy 一定會走最短路

學校的路可以看成一無向聯通張圖,圖上有 n 個點,m 條邊,每乙個點都有乙個唯一的編號 1~n

每一條邊有乙個邊權,表示兩個點之間的距離,zgy 的宿舍在 s 點,機房在 t點,而小賣部在 h 點

現在 zgy 想知道從宿舍經過小賣部到達機房的最短距離

不過因為在這個世界上有 q個 zgy,所以你必須回答 q 個問題

很棒的資料分治題

讀入裡面說了會讀入測試點編號……

其實是很明顯的暗示了……

一半的資料保證是連通圖,1 ≤ n ≤ 200,1 ≤ q ≤ \(10^5\)

這麼小的n,直接floyd跑一遍就好了,相當於floyd的板子題

另一半的資料保證圖連通,無環,1 ≤ n ≤ \(10^5\),1 ≤ q ≤ \(10^5\)

聯通圖無環……那不就是一棵樹嗎!

dfs預處理出到根節點的距離和lca,每次詢問輸出就好

**:

#include#define ll long long

#define inf 1000000000000000000

using namespace std;

int t,n,m,u,v,w;

int q,s,h,t;

struct edge

edge[1000005];

int cnt=0,head[100005];

inline void add_edge(int from,int to,int dis)

templateinline void read(t &res)

ll dis[205][205];

void floyd()

ll dep[100005];

ll ldep[100005];

int anc[400005][25];

void dfs(int u,int fa) }}

int lca(int x,int y)

} return anc[x][0];

}ll dis(int u,int v)

int main()

floyd();

read(q);

while(q--)

}else if(6<=t&&t<=10)

for(register int i=1;i<=n;++i) dep[i]=ldep[i]=inf;

dep[1]=0;

ldep[1]=1;

dfs(1,0);

read(q);

while(q--)

}return 0;

}

20191004機房測試 C 錦標賽

有乙個比賽已經有 n 個人參加,並且互相之間已經進行了比賽 每乙個人都有乙個得分用於最後排名 你作為第 n 1 個參賽者,需要與之前的每乙個人打一場比賽,初始得分為 0 對於每場比賽,有兩個人參加,不會存在平局,勝者得分增加 1,敗者得分不變 最後按照得分從高到低來排名,假設有人與你最終得分相同 那...

模擬測試20191004

如果直接暴力建圖跑bfs時空複雜度都是 o n 的,考慮怎麼優化bfs的過程 我們發現主要瓶頸在於有許多點被掃到了多次 考慮用乙個set存剩下的點,由於每個點能走到的點在相同奇偶性下是連續的,我們把奇數和偶數分開來存 每次用乙個點擴充套件時找到他能走的區間,把這些點從set裡刪掉就好了 注意區間範圍...

機房 測試計畫

2 計畫 2.4測試2 識別符號 3 測試設計說明 3.2測試2 識別符號 4 評價準則 感謝閱讀 1.1編寫目的 測試計畫是描述將要進行測試活動的範圍 方法 資源和時間進度的文件。它確定了測試項,要測試的特徵 測試任務,誰來完成每一項任務及需要制定應急方案的所有風險等。目的就是盡可能多的找到系統中...