具體題目就不貼了。
不得不說這是一道非常嚇人的題。
解題思路:審題有些難度,第一眼看到這道題有些嚇人,細細分析(ac )後發現其實不難。題目中希望求出乙個最優的樹結構傳輸圖,也就是乙個最大傳輸時間最小的樹。接下來來看對最大傳輸時間tma
xt_tmax
的定義:tma
xt_tmax
是樹中每層的最大傳輸時間的最大值。
結合上面的圖可以看出,tma
x=ma
xt_=max}
tmax=
max,樹的每一層中ti=
maxt_i=max,t_,t_,t_....\}}
ti=ma
x,要使得tma
xt_tmax
最小,也就是要讓選入連線各個點的邊的傳輸時間(ti,
jt_ti,j
)的最大值最小,同時要使得整個樹的節點都能傳輸資料到root(可以理解為整個樹必須是聯通的),此處我認為給出的root沒什麼用,因為即使root改變了,也就是說將樹中的某個子節點看作根節點,它仍然滿足樹結構,並且樹中的邊沒有變則tma
xt_tmax
的值就不會改變。
解題步驟:將邊按傳輸時間排序,依次選邊,選的過程中注意不能產生環,直到整個樹聯通,選的最後一條邊的傳輸時間即為tma
xt_tmax
,也就是擴邊法求最小生成樹的思路。
100分**(雖然100分,但是還是很虛,畢竟還是刷了好幾年的真題了,還真沒見過這樣的第四題,思路有什麼不對的地方還請各位指正。)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
struct edge
edge;
int par[
100005];
void
init
(int n)
intfind
(int k)
bool
same
(int i,
int j)
void
unite
(int i,
int j)
bool
cmp(edge& a,edge& b)
intsolve
(int n,vector
& g)
if(mark[g[i]
.v]==0)
if(cnt == n)
return ans;}}
return ans;
}int
main
(int argc,
char
const
*ar**)
CCF 201812 4 資料中心
樣例輸入45 11 2 3 1 3 4 1 4 5 2 3 8 3 4 2 樣例輸出4 樣例說明 下圖是樣例說明。分析 第一眼看到題目,想著是超級複雜的圖論問題,看懂樣例後,就感慨為啥當初我考的時候遇不到這麼簡單的題目呢?把之前14年考過的乙個最優灌溉 複製一下,改幾行 幾分鐘就ac了。言歸正傳,題...
ccf 201712 2 試題名稱 遊戲
問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位數 即...
CCF 201803 4 試題名稱 棋局評估
參考部落格鏈結 只能說,太厲害了。第一眼看到這個題可以說是毫無思路,根本無從下手!這道題最大的難點我覺得在於怎麼實現最優策略行棋。在這道題中,由於題目的特殊性,題目定義alice贏則得分為正,bob贏則得分為負,所以搜尋在哪個空位落子是最優的選擇時,可以通過在棋盤的空白處上不斷嘗試放棋,對於alic...