CCF 201812 4 試題名稱 資料中心

2021-09-11 06:49:35 字數 1655 閱讀 8501

具體題目就不貼了。

不得不說這是一道非常嚇人的題。

解題思路:審題有些難度,第一眼看到這道題有些嚇人,細細分析(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...